python中的mysqldb能对mysql进行操作,性能也比pyMysql优化,但是对于python3.x不太兼容。PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,遵循 Python 数据库 API v2.0 规范。所以在python 3上建议使用这个模块
安装pymysql的模块:
pip install PyMySQL
如果不愿意安装,下载下来,解压文件,将pymysql文件夹放到你的工程中即可
API:
https://www.python.org/dev/peps/pep-0249/
http://pymysql.readthedocs.io/en/latest/modules/connections.html
http://pymysql.readthedocs.io/en/latest/modules/cursors.html
PyMySQL模块中常用的2个对象Connection Object和Cursor Objects
Connection Object
方法 | 使用说明 |
---|---|
.close() | 关闭数据库连接 |
.commit() | 提交预处理的数据库操作 |
.rollback() | 事务回滚 |
.cursor() | 连接数据库是返回cursor Object |
Cursor Objects
方法 | 使用说明 |
---|---|
callproc(procname, args=()) | 用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 |
execute(query, args=None) | 执行查询语句,返回有效的行数(int) |
executemany(query, args) | querey是一个查询字符串,args是一个参数序列。这一序列的每一项都是一个序列或映射对象。 |
.fetchone() | 返回结果集的下个个记录 |
fetchmany(size=None) | 返回结果集的size条记录 |
.fetchall() | 返回结果集,返回的是tuple对象 |
.fetchall_unbuffered() | 返回结果集,返回list的对象 |
read_next() | 读取下一行 |
.scroll(1,mode='relative') | 按照当前位置移动 |
.scroll(1,mode='absolute') | 按照绝对位置移动 |
实例
import pymysql
conn = pymysql.connect(
# 数据库的地址
host='XXX',
#数据库的端口(number类型)
port=XXX,
# 数据库的帐号
user='XXX',
# 数据库的密码
password='XXX',
#连接中有多个数据库,这个填要查询的数据库的名称
db='XXX',
# 默认是acsic编码,现在改为
charset='utf8mb4',
# 默认返回是tutle,加入后返回为字典
cursorclass = pymysql.cursors.DictCursor
)
try:
with conn.cursor() as cursor:
sql = 'SELECT * from XX '
cursor.execute(sql)
data = cursor.fetchall()
print(data[3])
finally:
conn.close()