python - 尝试在 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'' 附近使用正确的语法。
基于上述错误,我认为这是不可能的,因为它似乎在参数中添加了撇号。我希望有人有一个聪明的解决方案,或者可以明确地告诉我它无法完成。
解决方案
推荐阅读
- angular - 重新加载页面时 Angular Universal 崩溃(路由不起作用)
- ios - 将比率应用于图像 sdWebImage Swift 后无法调整图像视图的大小
- python - 在终端中运行 Python 并获得 ValueError
- python - 为什么对 sys.frozen 使用 getattr 而不是 hasattr?
- c# - SQL Server 从 C# 生成的 CSV 批量插入特殊字符/Unicode
- c# - C# 使用 Parallel.ForEach 更新多个 xml 文件
- java - 为什么Eclipse不能连接到VM?(插座关闭)
- windows-10 - 覆盖 Defaultappassociations.xml 并让用户选择应用程序
- docker - elasticsearch如何增加磁盘空间
- visual-studio-2013 - 更新存储过程的链接