pymysql参数化查询
时间: 2024-12-26 21:25:56 浏览: 6
### 如何使用 `pymysql` 进行参数化查询
为了防止SQL注入并提高代码的安全性和可维护性,在Python中使用`pymysql`库进行数据库操作时推荐采用参数化查询的方式。下面展示了一个具体的例子来说明如何通过`pymysql`执行带参数的SQL语句。
```python
import pymysql
# 建立到MySQL服务器的连接
connection = pymysql.connect(
host='localhost',
user='root', # 用户名
password='password', # 密码
database='test_db' # 数据库名称
)
try:
with connection.cursor() as cursor:
# SQL语句中的%s作为占位符,实际值将在后续传入
sql_query = "INSERT INTO employees (first_name, last_name, age) VALUES (%s, %s, %s)"
# 定义要插入的数据元组
data_tuple = ('John', 'Doe', 30)
# 执行带有参数化的SQL命令
cursor.execute(sql_query, data_tuple)
# 提交更改至数据库
connection.commit()
finally:
# 关闭数据库连接
connection.close()
```
对于查询操作而言,可以利用相同的方式来传递参数:
```python
with connection.cursor() as cursor:
employee_id = 123
query_sql = "SELECT first_name, last_name FROM employees WHERE id=%s"
cursor.execute(query_sql, (employee_id,))
result = cursor.fetchone()[^2]
print(f"The selected employee is {result}")
```
上述代码片段展示了如何安全地向SQL语句中加入变量值而不必担心SQL注入攻击的风险。这里的关键在于使用 `%s` 占位符代替直接拼接字符串,并将实际值作为一个单独的参数列表提供给 `execute()` 函数调用[^4]。
阅读全文