pymysql使用
时间: 2025-03-08 08:06:06 浏览: 35
### 使用 PyMySQL 进行数据库操作
#### 安装 PyMySQL
为了使用 PyMySQL 模块,在 Python 环境中需要先安装此模块。可以利用 pip 工具来完成安装工作,命令如下所示[^4]:
```bash
pip3 install pymysql
```
#### 创建数据库连接
创建与 MySQL 数据库之间的连接是进行任何数据库交互的第一步。下面是一个简单的例子展示如何建立这种连接:
```python
import pymysql
connection = pymysql.connect(
host='localhost',
user='your_username', # 替换为自己的用户名
password='your_password', # 替换为自己的密码
database='test_db' # 替换为目标数据库名称
)
try:
with connection.cursor() as cursor:
sql_query = "SELECT VERSION()"
cursor.execute(sql_query)
version = cursor.fetchone()
print(f"Database version : {version}")
finally:
connection.close()
```
这段代码展示了怎样安全地打开和关闭一个数据库会话,并执行一条 SQL 查询语句以获取当前使用的 MySQL 版本号。
#### 执行查询和其他SQL指令
一旦建立了有效的数据库连接,则可以通过 `cursor` 对象发送任意形式的标准 SQL 命令给服务器端。这里有一个更复杂的案例说明了如何插入新记录、读取多条记录以及更新现有数据:
```python
with connection.cursor() as cursor:
# 插入单个记录
insert_sql = 'INSERT INTO users (name, age) VALUES (%s, %s)'
cursor.execute(insert_sql, ('Alice', 28))
# 提交更改
connection.commit()
# 获取多个记录
select_all_users = "SELECT * FROM users"
cursor.execute(select_all_users)
result_set = cursor.fetchall()
for row in result_set:
print(row)
# 更新特定条件下的记录
update_user_age = "UPDATE users SET age=%s WHERE name=%s"
affected_rows = cursor.execute(update_user_age, (30, 'Bob'))
print(f"{affected_rows} rows were updated.")
# 删除符合条件的数据项
delete_old_records = "DELETE FROM users WHERE age>%s"
deleted_count = cursor.execute(delete_old_records, (70,))
print(f"{deleted_count} old records have been removed.")
# 不要忘记提交事务中的所有变更
connection.commit()
```
以上脚本演示了几种常见类型的 CRUD(Create/Read/Update/Delete)操作方法。值得注意的是,当涉及到修改表结构或者删除大量数据时应当格外小心谨慎,最好提前做好备份措施以防万一。
#### 处理异常情况
在实际应用开发过程中不可避免会出现错误或意外状况的发生,因此编写健壮的应用程序还需要考虑这些因素。对于可能出现的问题应该采取适当的方式去捕获它们并作出响应。例如可以在 try-except 结构里加入 finally 子句确保无论发生什么都能正常释放资源。
```python
try:
...
except Exception as e:
print(e.args[0])
finally:
if connection.open:
connection.close()
```
这样即使遇到未预见的情况也能保证不会留下悬而未决的数据库链接占用系统资源。
#### 遵循最佳实践建议
- 总是在不再需要的时候及时断开同数据库间的联系;
- 将敏感信息比如账号名和密码存储于环境变量而非硬编码进源文件之中;
- 利用预编译语句防止 SQL 注入攻击风险;
- 合理规划每次请求返回的结果集大小以免一次性加载过多内容造成性能瓶颈;
阅读全文
相关推荐


















