pymysql详解
时间: 2025-05-29 18:01:29 浏览: 18
### pymysql 使用详解及功能介绍
#### 1. 安装
为了使用 `pymysql` 库,需要先将其安装到 Python 环境中。可以通过以下命令完成安装:
```bash
pip install pymysql
```
此过程不需要任何 C 语言依赖项,因此非常轻量化且易于部署[^2]。
---
#### 2. 基本概念
`pymysql` 是一个纯 Python 实现的库,用于与 MySQL 数据库进行交互。它支持常见的数据库操作,例如查询、插入、更新和删除等,并提供事务管理和游标控制等功能[^1]。
---
#### 3. 连接数据库
建立与 MySQL 数据库的连接是使用 `pymysql` 的第一步。以下是创建连接的标准方式:
```python
import pymysql
connection = pymysql.connect(
host='localhost', # 数据库主机地址
user='root', # 用户名
password='password', # 密码
database='test_db', # 数据库名称
charset='utf8mb4', # 字符编码
cursorclass=pymysql.cursors.DictCursor # 返回字典形式的结果
)
```
在此配置中,`cursorclass=pymysql.cursors.DictCursor` 表示返回的数据将以字典的形式呈现,便于后续处理[^4]。
---
#### 4. 执行 SQL 查询
通过获取游标对象并调用其方法可以执行各种类型的 SQL 操作。下面是一些常用的场景:
##### (1)查询数据
```python
try:
with connection.cursor() as cursor:
sql_query = "SELECT id, name FROM users WHERE age > %s"
cursor.execute(sql_query, (18,))
result = cursor.fetchall()
print(result) # 输出所有符合条件的记录
finally:
connection.close()
```
这里 `%s` 是占位符,实际参数通过元组传递给 `execute()` 方法以防止 SQL 注入攻击[^5]。
##### (2)插入数据
```python
with connection.cursor() as cursor:
insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)"
cursor.execute(insert_sql, ('Alice', '[email protected]'))
connection.commit() # 提交更改至数据库
```
注意,在修改类的操作完成后需显式调用 `commit()` 来保存变更;如果发生错误,则可通过回滚机制撤销未完成的任务[^1]。
##### (3)更新/删除数据
这些操作类似于插入逻辑,只需调整对应的 SQL 文本即可。例如:
```python
update_sql = "UPDATE users SET email=%s WHERE id=%s"
delete_sql = "DELETE FROM users WHERE id=%s"
# 更新某条记录
cursor.execute(update_sql, ('[email protected]', 1))
# 删除指定 ID 的记录
cursor.execute(delete_sql, (2,))
connection.commit()
```
---
#### 5. 游标的高级用法
除了基本的读写外,还可以利用不同的游标模式来优化性能或简化开发流程。例如,默认情况下每次只提取一条记录 (`fetchone`) 或全部结果 (`fetchall`),但如果面对大数据集时可能更倾向于逐批加载数据:
```python
batch_size = 100
sql_large_data = "SELECT * FROM large_table"
with connection.cursor() as cursor:
cursor.execute(sql_large_data)
while True:
batch_results = cursor.fetchmany(batch_size)
if not batch_results:
break
process_batch(batch_results) # 自定义批量处理函数
```
这种方式能够显著减少内存占用,尤其适合于大规模数据分析项目。
---
#### 6. 错误处理
在真实世界的应用程序中不可避免会遇到异常情况,所以建议始终围绕核心业务逻辑构建健壮的错误捕获策略:
```python
try:
with connection.cursor() as cursor:
problematic_sql = "INVALID_SQL_SYNTAX"
cursor.execute(problematic_sql)
except pymysql.MySQLError as e:
print(f"MySQL Error: {e}")
finally:
connection.close()
```
上述代码片段展示了如何捕捉由非法指令引发的具体异常类型——即继承自标准库中的 `Exception` 类别的子类别之一:`MySQLError`[^2]。
---
#### 7. 特性和优势总结
- **跨平台兼容性**:由于完全基于 Python 编写而成,故可在任意支持解释器运行环境之上无缝工作。
- **易维护性**:相比其他同类解决方案而言结构清晰简单明了,降低了学习成本同时也减少了潜在的技术债务风险。
- **安全性保障措施完善**:内置预防手段有效抵御恶意注入威胁的同时还允许开发者自行扩展额外防护层。
- **灵活性强**:不仅限于是 CRUD 操作还包括存储过程调用以及二进制文件上传下载等多种复杂需求的支持能力[^3]。
---
阅读全文
相关推荐















