python中操作mysql的pymysql模块详解简述pymsql是Python中操作MySQL的模块，其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。本文测试python版本：3.5.2。mysql版本：5.7.18一、安装pip install pymysql二、使用操作1. 执行SQL#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'junxi' import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='blog', passwd='123456', db='blog', charset='utf8') # 创建游标, 查询数据默认为元组类型 cursor = conn.cursor() # 执行SQL，并返回收影响行数 row1 = cursor.execute("update users set password = '123'") print(row1) # 执行SQL，并返回受影响行数 row2 = cursor.execute("update users set password = '456' where id > %s", (1,)) print(row2) # 执行SQL，并返回受影响行数（使用pymysql的参数化语句防止SQL注入） row3 = cursor.executemany("insert into users(username, password, email)values(%s, %s, %s)", [("ceshi3", '333', 'ceshi3@11.com'), ("ceshi4", '444', 'ceshi4@qq.com')]) print(row3) # 提交，不然无法保存新建或者修改的数据 conn.commit() # 关闭游标 cursor.close() # 关闭连接 conn.close()提示：存在中文的时候，连接需要添加charset='utf8'，否则中文显示乱码。2、获取查询数据#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'junxi' import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='blog', passwd='123456', db='blog', charset='utf8') # 创建游标, 查询数据默认为元组类型 cursor = conn.cursor() cursor.execute("select * from users") # 获取第一行数据 row_1 = cursor.fetchone() print(row_1) # 获取前n行数据 row_n = cursor.fetchmany(3) print(row_n) # 获取所有数据 row_3 = cursor.fetchall() print(row_3) # 提交，不然无法保存新建或者修改的数据 conn.commit() # 关闭游标 cursor.close() # 关闭连接 conn.close()3、获取新创建数据自增ID可以获取到最新自增的ID，也就是最后插入的一条数据ID#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'junxi' import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='blog', passwd='123456', db='blog', charset='utf8') # 创建游标, 查询数据默认为元组类型 cursor = conn.cursor() cursor.executemany("insert into users(username, password, email)values(%s, %s, %s)", [("ceshi3", '333', 'ceshi3@11.com'), ("ceshi4", '444', 'ceshi4@qq.com')]) new_id = cursor.lastrowid print(new_id) # 提交，不然无法保存新建或者修改的数据 conn.commit() # 关闭游标 cursor.close() # 关闭连接 conn.close()4、移动游标操作都是靠游标，那对游标的控制也是必须的注：在fetch数据时按照顺序进行，可以使用cursor.scroll(num,mode)来移动游标位置，如： cursor.scroll(1,mode='relative') # 相对当前位置移动 cursor.scroll(2,mode='absolute') # 相对绝对位置移动5、fetch数据类型关于默认获取的数据是元组类型，如果想要或者字典类型的数据，即：import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='blog', passwd='123456', db='blog', charset='utf8') # 游标设置为字典类型 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 左连接查询 r = cursor.execute("select * from users as u left join articles as a on u.id = a.user_id where a.user_id = 2") result = cursor.fetchall() print(result) # 查询一个表的所有字段名 c = cursor.execute("SHOW FULL COLUMNS FROM users FROM blog") cc = cursor.fetchall() # 提交，不然无法保存新建或者修改的数据 conn.commit() # 关闭游标 cursor.close() # 关闭连接 conn.close()查看运行结果：[{'user_id': 2, 'id': 2, 'password': '456', 'email': 'xinlei2017@test.com', 'a.id': 2, 'content': '成名之路', 'title': '星光大道', 'username': 'tangtang'}]https://segmentfault.com/a/1190000014619788