王哆啦的自留地 - 2021年3月
type: channel
link: https://wangduola.com/2021/03/
description: 深筑墙，广积粮。
items: python中操作mysql的pymysql模块详解

python中操作mysql的pymysql模块详解
type: item
date: 2021-03-25T17:07:00+08:00
description: 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() # 关闭连接 c…