网站首页 > 技术文章 正文
PyMySQL是一个用于Python的纯Python MySQL客户端库,它实现了PEP 249 Python数据库API规范,并提供了对MySQL数据库的连接和操作功能。
代码示例:
连接到MySQL数据库:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 关闭连接
conn.close()
执行SQL查询语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行带参数的SQL查询语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行带参数的SQL查询语句
sql = "SELECT * FROM users WHERE age > %s"
cursor.execute(sql, (18,))
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL插入语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL插入语句
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql, ('John', 25))
# 提交事务
conn.commit()
# 关闭连接
conn.close()
执行SQL更新语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL更新语句
sql = "UPDATE users SET age = %s WHERE id = %s"
cursor.execute(sql, (30, 1))
# 提交事务
conn.commit()
# 关闭连接
conn.close()
执行SQL删除语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL删除语句
sql = "DELETE FROM users WHERE id = %s"
cursor.execute(sql, (1,))
# 提交事务
conn.commit()
# 关闭连接
conn.close()
获取最后插入的自增ID:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL插入语句
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql, ('John', 25))
# 获取最后插入的自增ID
last_insert_id = cursor.lastrowid
# 提交事务
conn.commit()
# 关闭连接
conn.close()
# 打印最后插入的自增ID
print(last_insert_id)
使用事务处理:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 开始事务
conn.begin()
try:
# 创建游标对象
cursor = conn.cursor()
# 执行SQL语句
sql1 = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql1, ('John', 25))
sql2 = "UPDATE users SET age = %s WHERE id = %s"
cursor.execute(sql2, (30, 1))
# 提交事务
conn.commit()
except:
# 回滚事务
conn.rollback()
# 关闭连接
conn.close()
执行多条SQL语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行多条SQL语句
sql = """
INSERT INTO users (name, age) VALUES ('John', 25);
UPDATE users SET age = 30 WHERE id = 1;
"""
cursor.execute(sql)
# 提交事务
conn.commit()
# 关闭连接
conn.close()
执行SQL查询并分页:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句并分页
sql = "SELECT * FROM users LIMIT %s, %s"
cursor.execute(sql, (0, 10))
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
使用字典类型获取查询结果:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb', cursorclass=pymysql.cursors.DictCursor)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行存储过程:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行存储过程
cursor.callproc('get_users')
# 获取输出参数值
output_param = cursor.fetchone()
print(output_param)
# 关闭连接
conn.close()
执行事务中的多个SQL语句:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
try:
# 开始事务
conn.begin()
# 创建游标对象
cursor = conn.cursor()
# 执行SQL语句
sql1 = "INSERT INTO users (name, age) VALUES ('John', 25)"
cursor.execute(sql1)
sql2 = "UPDATE users SET age = 30 WHERE id = 1"
cursor.execute(sql2)
# 提交事务
conn.commit()
except:
# 回滚事务
conn.rollback()
# 关闭连接
conn.close()
执行SQL查询并获取字段名:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取字段名
column_names = [desc[0] for desc in cursor.description]
print(column_names)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的行数:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的行数
num_rows = cursor.rowcount
print(num_rows)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的列数:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的列数
num_columns = len(cursor.description)
print(num_columns)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
使用连接池进行数据库连接:
import pymysql
from DBUtils.PooledDB import PooledDB
# 创建连接池
pool = PooledDB(pymysql, host='localhost', user='root', password='password', database='mydb')
# 从连接池获取连接
conn = pool.connection()
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
使用事务管理器进行数据库连接:
import pymysql
from pymysql import err
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 开始事务
conn.begin()
# 创建游标对象
cursor = conn.cursor()
try:
# 执行SQL语句
sql1 = "INSERT INTO users (name, age) VALUES ('John', 25)"
cursor.execute(sql1)
sql2 = "UPDATE users SET age = 30 WHERE id = 1"
cursor.execute(sql2)
# 提交事务
conn.commit()
except err as e:
# 回滚事务
conn.rollback()
# 关闭连接
conn.close()
使用with语句进行数据库连接:
import pymysql
# 创建数据库连接
with pymysql.connect(host='localhost', user='root', password='password', database='mydb') as conn:
# 创建游标对象
with conn.cursor() as cursor:
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
使用连接池进行数据库连接并设置连接池大小:
import pymysql
from DBUtils.PooledDB import PooledDB
# 创建连接池
pool = PooledDB(pymysql, host='localhost', user='root', password='password', database='mydb', maxconnections=10)
# 从连接池获取连接
conn = pool.connection()
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
设置字符集:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb', charset='utf8mb4')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
设置自动提交模式:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb', autocommit=True)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL插入语句
sql = "INSERT INTO users (name, age) VALUES ('John', 25)"
cursor.execute(sql)
# 关闭连接
conn.close()
设置超时时间:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb', connect_timeout=10)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
使用fetchone()方法获取查询结果的一行数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的一行数据
row = cursor.fetchone()
# 打印结果
print(row)
# 关闭连接
conn.close()
使用fetchmany()方法获取查询结果的多行数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的多行数据
rows = cursor.fetchmany(5)
# 打印结果
for row in rows:
print(row)
# 关闭连接
conn.close()
使用scroll()方法滚动浏览查询结果:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 滚动浏览查询结果
cursor.scroll(2, mode='absolute') # 绝对位置
row = cursor.fetchone()
print(row)
cursor.scroll(-1, mode='relative') # 相对位置
row = cursor.fetchone()
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的列名和行数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取字段名
column_names = [desc[0] for desc in cursor.description]
print(column_names)
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的字典类型数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb', cursorclass=pymysql.cursors.DictCursor)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的字典类型数据
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的生成器:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的生成器
results = cursor.fetchall()
# 生成器循环打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的元组类型数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的元组类型数据
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的列表类型数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 获取查询结果的列表类型数据
results = list(cursor.fetchall())
# 打印结果
for row in results:
print(row)
# 关闭连接
conn.close()
执行SQL查询并获取查询结果的集合类型数据:
import pymysql
# 创建数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor(pymysql.cursors.DictCursor)
# 执行SQL查询语句
sql = "SELECT * FROM users"
cursor.execute(sql)
# 关闭连接
conn.close()
mysql其他操作可参考:
技术干货|MySQL 8索引优化、查询优化、表设计优化和配置优化
猜你喜欢
- 2025-06-24 python django查询集缓存原理及字段查询表达式
- 2025-06-24 python3表达式树解释,并用于实现简单的数学表达式求值
- 2025-06-24 python __str__、__repr__和__bytes__功能及应用示例
- 2025-06-24 python3-运算符优先级(python运算符优先级遵循的规则)
- 2025-06-24 Python 数据分析模块profiling功能及应用
- 2025-06-24 python3将mysql数据库数据库缓存到redis应用场景
- 2025-06-24 Python字符串操作:替换、匹配、格式化、索引及返回类型
- 06-24Python调用Docker API的使用方式(pycharm docker 调试)
- 06-24青少年Python编程系列28:Python中函数的递归调用
- 06-24python调用sqlite数据库案例(python 调用数据库)
- 06-24【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 06-24通过pybind11来实现python调用C++接口(一)
- 06-24Python编程调用Deepseek API创建智能体
- 06-24python多装饰器针对函数、类、方法的调用顺序说明
- 06-24Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- 270℃Python短文,Python中的嵌套条件语句(六)
- 268℃python笔记:for循环嵌套。end=""的作用,图形打印
- 266℃PythonNet:实现Python与.Net代码相互调用!
- 262℃Python实现字符串小写转大写并写入文件
- 261℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 121℃原来2025是完美的平方年,一起探索六种平方的算吧
- 101℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 96℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python调用Docker API的使用方式(pycharm docker 调试)
- 青少年Python编程系列28:Python中函数的递归调用
- python调用sqlite数据库案例(python 调用数据库)
- 【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 通过pybind11来实现python调用C++接口(一)
- Python编程调用Deepseek API创建智能体
- python多装饰器针对函数、类、方法的调用顺序说明
- Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- Python | Django 外部脚本调用 models 数据库
- 自学Python第九天——操作列表(python操作步骤)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)