Python操作MySQL

来源:互联网 发布:淘宝微淘在哪 编辑:程序博客网 时间:2024/06/05 16:23

python+MySQLdb操作MySQL

一、环境配置

  1. python2.7
  2. windows 64bit环境
  3. pycharm(IDE个人喜好选择)
  4. MySQLdb:根据我自己的环境,我使用的是64bit的支持python2.7版本的MySQLdb。百度盘链接:http://pan.baidu.com/s/1dEMdPnF 密码:p96r。下载安装即可,如在安装过程出现require python…要考虑python是32还是64位,是否与安装的MySQLdb兼容。
  5. 安装完毕,windows下进入cmd->python
>>>import MySQLdb>>>

即安装成功!
二、基本操作
1、连接数据库
我这里直接贴代码:

#coding=utf-8import MySQLdb# conn = MySQLdb.connect(#     host='localhost',#     user='root',#     passwd='123456',#     db='pydb',#     charset='utf8'# )conn = MySQLdb.connect('localhost','root','123456','pydb',charset='utf8')cur = conn.cursor()
  • 首先导入MySQLdb模块
  • 创建连接:MySQLdb.connect(),参数详情即注释部分,尤其要注意最后的charset=’utf8’参数是为了避免中文乱码(编码让人很是头疼),所以在.py开头要加入文档编码的设定语句:#coding=utf-8。

2、基本操作
数据库的操作区别就在于sql语句上,我这里以最基本的查询为例,其他操作只需更改sql语句即可(保证sql语句正确)。
代码:

cur = conn.cursor()cols = cur.execute("select * from pytable")
  • .cursor()方法创建游标(如同c指针,anyway~)。
  • .execute(sql)执行sql语句,返回sql语句执行的行数。
  • 这些操作是在第一步成功连接数据库的基础上进行。

3、如何显示查询的结果?
废话少说,贴代码:

for it in cur.fetchmany(cols):    print it
  • .fetchmany(arg)方法接受一个行数作为参数,代码中的cols就有用处了
  • 但是,我在学习过程中发现一个问题,这样显示的结果有异样:
    (201701L, u’\u5f20\u4e09’, 17L, u’\u7537’)
    (201702L, u’\u674e\u56db’, 19L, u’\u7537’)
    (201703L, u’\u674e\u534e’, 20L, u’\u5973’)

为此,修改一下代码:

for it in cur.fetchmany(cols):    for i in range(len(it)):        print it[i],    print

结果:
201701 张三 17 男
201702 李四 19 男
201703 李华 20 女

这才是我们想看到的结果。
至于为什么会出现异样的结果,我会在学习中尝试去解决(回头更新此文章)。
3、善后工作
关闭连接,游标,提交事务的工作:

conn.commit()cur.close()conn.close()

连接对象的.commit()方法是提交当前事务(查询虽然没有事物去提交,但这是操作数据库时应该养成的习惯)。
.close()方法相信不会陌生,关闭游标对象,关闭数据库连接,这才完成了对数据库操作的完整过程。
三、方法补充
1、连接对象

  • rollback()取消当前事物
  • cursor()使用当前连接创建并返回一个游标或类游标的对象

    一旦执行close()方法,再去试图使用这个连接对象的方法会产生异常。

2、游标对象

  • connection()创建此游标对象的连接(可选)
  • rowcount()最后一次exectur()操作返回或受影响的行数
  • fetchone()得到结果集的下一行,重复执行此操作得到的结果不同(类比指针的next)
  • fetchall()返回结果集中剩下的所有行

目前为止,涉及的内容都是最最基本的,后续如有新的认识,继续更新此博文,谢谢。

                                            九月七日·晴                                            2017-11-11                      
原创粉丝点击