您的位置:首页 > 编程语言 > Python开发

Python操作MySQL数据库(二):MySQLdb模块

2016-03-17 00:00 645 查看
摘要: Python操作MySQL数据库(二)MySQLdb模块-补充

Python操作mysql数据库:MySQLdb模块

(2012-12-21 14:52:00)

Python中的mysql操作可以使用
MySQLdb模块来完成。它符合Python社区设计的
Python Database API SpecificationV2.0标准,所以与其他的数据库操作的API,如SQLite等基本类似。

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')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: