【发布时间】:2020-08-27 12:08:05
【问题描述】:
我是 python 和 mysql 的新手。我在为 mysql 填充正确的查询语句时遇到问题。
sql = "SELECT * FROM Persons WHERE %s"
cur = db.cursor()
cur.execute(sql,(where,))
where 是一个字符串变量,它为 WHERE 子句创建一个字符串;这是问题的关键。当我打印此变量时,它会给出以下结果: 性别 = True 和 IsLate = False (没有任何引号)但是当我将此变量添加到查询中以执行它时,它会在字符串周围添加单引号。 我用了命令
print(cur.statement)
并打印: SELECT * FROM Persons WHERE 'Gender = True And IsLate = False' 提供参数后,将其放在单引号内,查询返回 0 行。 我已经通过将查询语句和变量连接在一起并将字符串作为查询执行来解决,这很有效,
sql = sql + where
cur.execute(sql)
但我知道这不是专业的方式,因为我搜索并发现专业的方式是使用参数化查询并使用变量来存储条件并在执行查询时提供它。 寻求建议,我的想法是否正确?
【问题讨论】: