python_MySQL 数据库操做

Python中的mysql操做能够使用 MySQLdb模块来完成。它符合Python社区设计的 Python Database API SpecificationV2.0标准,因此与其余的数据库操做的API,如SQLite等基本相似。
学习可参见:http://www.runoob.com/python3/python3-mysql.html
 
1.链接的创建与释放
创建链接时可用connect函数,它返回一个Connection类型对象
 
conn = MySQLdb. connect( 'localhost''root''123456''test')
 
connect方法经常使用的参数有
 
host:数据库主机名.默认是用本地主机. 
user:数据库登录名.默认是当前用户. 
passwd:数据库登录的秘密.默认为空. 
db:要使用的数据库名.没有默认值. 
port:MySQL服务使用的TCP端口.默认是3306.
charset:数据库编码。
 
若是在数据编码设置正确时,向数据库插入数据出现乱码时,能够设置链接的字符集参数 charset
 
释放链接时能够应用Connection类型对象的close方法。
conn. close()
 
2.Cursor对象
执行SQL语句前要得到一个指定链接的Cursor对象,由Cursor对象执行SQL查询并获取结果。
 
得到Cursor对象的方法
cur = conn. cursor()
 
在默认状况下cursor方法返回的是BaseCursor类型对象,BaseCursor类型对象在执行查询后每条记录的结果以列表(list)表示。若是要返回字典(dict)表示的记录,就要设置cursorclass参数为MySQLdb.cursors.DictCursor类。
cur = conn. cursor(cursorclass=MySQLdb.cursors.DictCursor)
这个参数也可在调用connect方法创建链接时设置
conn  =  MySQLdb. connect(host  =  'localhost',  user  =  'root',  passwd  =  '123456',  db  =  'test'  cursorclass  =  MySQLdb.cursors.DictCursor)
 
执行结束后能够关闭cursor对象
cur. close()
 
3.查询,插入,更新、删除操做。
 
Cursor类型提供了execute方法用于执行SQL操做
execute ( query  [,parameters])
query是一个SQL字符串,parameters是一个序列或映射,返回值是所影响的记录数
 
查询
cur. execute( "select * from t1 where name = %s and age = %s", ( 'June', 27))
cur. execute( "select * from t1 where name = %(name)s and age = %(age)s", { 'name': 'June''age':27})
这里和字符串的格式化操做相似,但无论参数是什么类型,都要用'%s'
 
获取结果
获取结果集有三种方法,fetchone、fetchall和fetchmany,返回结果是一个tuple对象,tuple中的每个元素对应查询结果中的一条记录。
fetchone ()返回结果集中的下一条记录
fetchall ()返回结果集中的剩余记录
fetchmany ([size])返回结果集中size条记录
 
插入、更新、删除
cur. execute( "insert t1(name, age) values(%s, %s)", ( 'Jack', 32))
更新和删除的操做与更新、删除相似
 
除了execute,Cursor类还提供了executemany()方法
executemany ( query  [, parametersequence])
querey是一个查询字符串,parametersequence是一个参数序列。这一序列的每一项都是一个序列或映射对象。但executemany只适合插入、更新或删除操做,而不适用于查询操做。
 
cur. execute( "insert t1(name, age) values(%s, %s)", (( 'Jack', 32), ( 'Junior', 24)))
 
mysql如今通常会默认InnoDB做为默认引擎,InnoDB引擎执行插入、更新、删除操做后要进行提交,才会更新数据库。
cur. commit()
 
4.其余操做
Connection类:
rollback () 回滚
 
Cursor类:
callproc ( procname ,  args ):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数。
nextset ():移动到下一个结果集
执行查询操做或存储过程时可能返回多个结果集,例如:
cur. execute( 'select * from t1; select * from t2')
相关文章
相关标签/搜索