首页 > 解决方案 > 尝试在 Python 中使用参数化 MySQL SELECT 语句

问题描述

我对 Python 和 MySQL 比较陌生,并试图构建一个以指定表、列和值为目标的查询。我能够通过将字符串和函数输入拼接在一起来使其工作,但一直在使用参数 (%s) 来查看我是否可以以更漂亮的方式完成相同的任务 - 这可能吗?

下面是我的(简化的)函数的工作迭代:

def getRowbyString(a_table, a_col1, a_string):

  q = ("SELECT * FROM " + a_table + " WHERE " + "LOWER(" + a_col1 + ")" + " = '" + a_string + "'")

  qr = db.Cursor.execute(q)

  results = []

  for row in qr:
    results.append(row)
  
  return results

当我更新我的选择语句和游标以使用参数时:

q = "SELECT * FROM %s WHERE LOWER(%s) = %s"

dbCursor.execute(q, (a_table, a_col1, a_string))

我收到以下消息:
ProgrammingError: 1064 (42000): You have an error in your SQL syntax; 检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''employees' WHERE LOWER('first_name') = 'saniya'' 附近使用正确的语法

基于上述错误,我认为这是不可能的,因为它似乎在参数中添加了撇号。我希望有人有一个聪明的解决方案,或者可以明确地告诉我它无法完成。

标签: pythonmysql

解决方案


推荐阅读