MySQL 数据库的连接
目录
1 安装MySQL-python
MySQL db 是Python连接MySQL的模块。 测试: 使用之前首先要确定Python环境里有没有这个库,打开Python shell,输入:
import MySQLdb
如果返回错误信息,就表示还没有安装这个模块。需要下载安装。 下载地址:https://pypi.python.org/pypi/MySQL-python/ 下载压缩文件之后直接解压,进入解压文件夹: $ python setup.py install
2 连接
2.1 使用MySQLdb连接MySQL的函数为connect()。声明如下:
connect (parameters...)
常用参数如下:
- host: MySQL 主机名或者IP地址。本地的为localhost/127.0.0.1
- user: 连接使用的用户名。本地的为root。
- password: 连接使用的用户名的密码。
- dbname: 默认打开的数据库。
- port: MySQL 服务端口。MySQL服务端口的TCP端口,默认是3306。
如果连接成功返回一个连接对象。若输入的数据库信息不对,连接失败,会触发 OperationalError,返回错误信息。
2.2 创建连接对象:
import MySQLdb conn = MySQLdb.Connection('host','user','password',dbname)
这个连接对象也提供了对事物操作的支持,标准的方法如下:
- 提交:commit()
- 回滚:rollback()
3 数据操作
3.1 获取cursor游标对象
数据操作包括查询(select),插入(insert),更新(update),删除(delete)等。由于MySQLdb模块 底层其实是调用C API的,所以,需要先得到当前所指向数据库的指针(游标对象):
cur =conn.cursor()
3.2 数据操作
现在可以使用cursor对象的execute()执行SQL语句进行数据操作了。例如:
#创建数据表 cur.execute("create table student(id int,name varchar(20))") # 获取表中有多少条数据 cur.execute('select * from tables') #插入一条数据 cur.execute("insect into student ('2','Tom')...") #修改 满足查询条件的数据 cur.execute("update student set id = '3' where name = 'Tom'") #删除 满足查询条件的数据 cur.execute("delete from student where id = '3'")
查询数据的操作并没有把表中的数据打印出来,只得到了表中数据的行数。fetchone() 方法可以帮助我们获得表中的数据,可是每次执行cur.fetchone() 获得的数据都不一样,换句话说我每执行一次, 游标会从表中的第一条数据移动到下一条数据的位置,所以,我再次执行的时候得到的是第二条数据。 scroll(0,'absolute')方法可以将游标定位到表中的第一条数据。
- 打印表中的数据
fetchmany()方法可以获得多条数据,但需要指定数据的条数,通过 一个for循环就可以把多条数据打印出啦!
aa = cur.execute("select * from student") info = cur.fetchmany(aa) for ii in info: print ii
- 注意
在执行完插入或修改或删除操作后,需要调用一下conn.commit()方法 进行提交,否则操作不会生效,即数据不会被真的插入。
3.3 关闭连接
- 关闭操作分两步,需要分表地关闭指针对象cursor和连接对象connection
cur.close() connection.close()