【发布时间】:2021-07-22 02:05:00
【问题描述】:
我在运行函数时不断收到此错误:
您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 '%s) 附近使用的正确语法
我正在尝试输入取自另一个数据库的值。任何帮助将不胜感激....
def filmByID(results):
sql = "select * from film where filmid in (%s)"
with db:
cursor = db.cursor()
cursor.execute(sql, (results))
films = cursor.fetchall()
for film in films:
print(film["FilmName"], film["FilmSynopsis"])
【问题讨论】:
-
你没有显示你的 sql 字符串。你需要显示你的 sql 变量值
-
AFAIK,您不应该使用
IN的参数替换。如果您需要匹配多个值,那么您需要拥有与值一样多的占位符。例如,cursor.execute("select * from film where filmid in (%s, %s, %s)", (1, 2, 3)). -
谢谢,当值的数量未知并且可以变化时,我可以为占位符做什么?
-
这不是未知数。它在代码时是未知的,但在运行时是未知的。根据
results参数中提供的列表/元组的长度创建%s, %s的字符串。 (根据filmByID方法的参数构建sql中的字符串。) -
results是列表还是元组?
标签: python sql database search input