MySQL如何使用参数化查询?
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
MySQL中使用参数化查询可以提高代码的可读性和安全性,防止SQL注入攻击。参数化查询通常使用占位符,这些占位符在执行查询前被参数值替换。在MySQL中,参数化查询可以通过预处理语句(prepared statements)来实现。
以下是一个使用参数化查询的简单例子,假设我们有一个名为users
的表,它有两个字段:id
和username
。
import mysql.connector
# 连接到MySQL数据库
conn = mysql.connector.connect(
host='hostname',
user='username',
password='password',
database='database_name'
)
# 创建一个cursor对象
cursor = conn.cursor()
# 定义一个参数化查询
query = "SELECT * FROM users WHERE username = %s"
# 使用占位符替换username
username = 'example_user'
# 执行预处理语句
cursor.execute(query, (username,))
# 获取查询结果
results = cursor.fetchall()
# 遍历并打印结果
for row in results:
print(row)
# 关闭cursor和连接
cursor.close()
conn.close()
在这个例子中,%s
是一个参数化的占位符,它将被cursor.execute()
方法中的(username,)
元组替换。这种方式可以有效防止SQL注入攻击,因为参数值不会直接拼接到SQL语句中,而是在数据库内部处理。
评论已关闭