Python教程:PyMySQL模块详解
Python之PyMySQL模块
目录
安装
pip install pymysql
连接数据库
使用connect
函数创建连接对象
此对象提供数据库的关闭、事务提交、事务回滚等操作
示例:
import pymysql
# 以下为必填参数
conn = pymysql.connect(user='root', # 用户名
password='123456', # 密码
host='127.0.0.1', # 服务器地址
port=3306, # 数据库端口
database='emp' # 要连接的数据库
)
connect
拓展
进入connect
函数可以看到更多参数:
def __init__(
self,
*,
user=None, # 用户名
password="", # 密码
host=None, # 连接地址
database=None, # 库名
unix_socket=None, # 如果使用Unix套接字连接到数据库,指定套接字文件的路径
port=0, # 数据库端口号
charset="", # 使用的字符集 MySQL中一般是utf8mb4
collation=None, # 指定排序规则
sql_mode=None, # 连接使用的SQL模式
read_default_file=None, # 指定默认连接参数的配置文件路径
conv=None, # 自定义类型转换器
use_unicode=True, # 是否使用Unicode编码
client_flag=0, # 客户端标志位
cursorclass=Cursor, # 游标类,用于处理查询结果
init_command=None, # 建立连接后执行的初始命令
connect_timeout=10, # 连接超时时间
read_default_group=None, # 读取默认连接参数的组名
autocommit=False, # 是否自动提交事务
local_infile=False, # 是否允许本地加载数据文件
max_allowed_packet=16 * 1024 * 1024, # 允许的最大数据包大小
defer_connect=False,# 是否延迟连接
auth_plugin_map=None, # 指定认证插件映射
read_timeout=None, # 读取超时时间(秒)
write_timeout=None, # 写入超时时间(秒)
bind_address=None, # 绑定本地地址
binary_prefix=False,# 是否启用二进制前缀
program_name=None, #程序名称
server_public_key=None, # 服务器公钥
ssl=None, # 是否使用SSL/TLS加密连接
ssl_ca=None, # 指定CA证书文件的路径
ssl_cert=None, # 指定客户端证书文件的路径
ssl_disabled=None, #是否禁用SSL
ssl_key=None, # 指定客户端私钥文件的路径
ssl_verify_cert=None, # 是否验证服务器证书
ssl_verify_identity=None, # 是否验证服务器身份
compress=None, # 不支持
named_pipe=None, # 不支持
passwd=None, # 已弃用
db=None, # 已弃用
)
获取游标
conn = pymysql.connect(user='root', # 用户名
password='7997', # 密码
host='127.0.0.1', # 服务器地址
port=3306, # 数据库端口
database='emp', # 连接的数据库
cursorclass=DictCursor # 返回字典
)
cursor = conn.cursor() # 获取游标
操作数据
查找
import pymysql
from pymysql.cursors import DictCursor
conn = pymysql.connect(user='root', # 用户名
password='7997', # 密码
host='127.0.0.1', # 服务器地址
port=3306, # 数据库端口
database='emp', # 连接的数据库
cursorclass=DictCursor # 返回字典
)
cursor = conn.cursor()
sql = 'select * from emp5'
cursor.execute(sql)
res = cursor.fetchall()
print(res) # 返回一个由列表包裹的字典
# 输出:[{'id': 1, 'name': '张三', 'time': datetime.datetime(2024, 1, 25, 15, 24, 19), 'age': 18, 'wages': 2000, 'dep_id': 203}, {'id': 2, 'name': '倪哥', 'time': datetime.datetime(2024, 1, 25, 15, 34, 11), 'age': 20, 'wages': 1000, 'dep_id': 201}]
添加
进行增删改时注意提交事务conn.commit
import pymysql
from pymysql.cursors import DictCursor
conn = pymysql.connect(user='root', # 用户名
password='7997', # 密码
host='127.0.0.1', # 服务器地址
port=3306, # 数据库端口
database='emp', # 连接的数据库
cursorclass=DictCursor # 返回字典
)
cursor = conn.cursor()
sql_insert = 'insert into emp5 (name) value(%s) '
# 元组形式传参
cursor.execute(sql_insert, ("嗨嗨嗨",))
conn.commit() # 提交事务
sql_insert = 'insert into emp5 (name) value(%s) '
# 字典形式传参
cursor.execute(sql_insert, {'emp_name': "员工二号"})
conn.commit()
添加成功~
更新
import pymysql
from pymysql.cursors import DictCursor
# 以下为必填参数
conn = pymysql.connect(user='root', # 用户名
password='7997', # 密码
host='127.0.0.1', # 服务器地址
port=3306, # 数据库端口
database='emp', # 连接的数据库
cursorclass=DictCursor # 返回字典
)
cursor = conn.cursor()
# 列表形式传参
sql_update = 'update emp5 set name=%s where id=%s '
cursor.execute(sql_update, ['员工三号', 11])
conn.commit()
作者:Az_plus