Python mysqlclient教程
文章目录
安装
通过pip安装
|
|
测试是否安装成功
|
|
如果出现以下报错
Library not loaded: @rpath/libmysqlclient.21.dylib
创建对应软链
|
|
使用
连接数据库
|
|
上面代码通过UNIX socket连接本地MySQL服务。
一般来说,将密码写在代码里面并不明智:
|
|
这个实现的效果跟上一个例子是相同的,但是账号密码和其它参数是通过 ~/.my.cnf 获取,更详细信息参考 option files。
现在可以通过 db
变量来执行sql语句 db.query()
:
|
|
该语句没有返回值,但可以捕获异常。异常被定义在不同的模块 MySQLdb._exceptions
中。
获取结果
db.query()
没有返回值,那要如何获取结果?有两种方式:
|
|
两种方式均返回结果集对象,有什么不同呢?
store_result()
返回的是所有结果集,当查询数据较大时使用 limit
限制条数。
use_result()
将结果集暂存在服务中并一条一条获取,除非获取完所有数据,否则不会执行其它query。
一般情况下建议使用 store_result()
,除非无法使用 limit
并且结果集非常大。
然后通过 fetch_row()
获取数据
|
|
fetch_row()
接收一些的参数
maxrows
返回的记录条数,默认是1,当为0时表示返回所有结果集how
返回值的类型0
tuple元组类型,默认1
dictionary字典类型,以字段名作为键值
留意到上面的元组数据,数字类型的字段也返回成了string。这是因为MySQL默认将所有结果返回成string类型,莫非要自己一个一个转换?那不是很操蛋?
其实 MySQLdb
已经帮我们想好。在调用 connect()
连接MySQL的时候通过传 conv
参数实现自动转换。
|
|
这样返回的结果就正常了 ((3, 2, 0),)
。
常用方法
conn.insert_id()
获取最后插入IDconn.affected_rows()
影响行数_mysql.debug()
打开调试
文章作者 Lam
上次更新 2020-08-06