gpt4 book ai didi

python - Cursor.execute数据添加单引号并中断包含Python中mysql的IN(1,2)语句的查询

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:08 26 4
gpt4 key购买 nike

感谢您的阅读。我在尝试将变量发送到cursor.execute(query,variable) 时遇到问题。查询包含 IN (%s) 语句,变量包含逗号分隔的整数。当 python 执行时明显向变量添加单引号时,就会出现问题。它破坏了查询。所以...如何覆盖此行为以丢弃引号?

查询:review_authors=

SELECT   autor.id, autor.escuela, autor.nombre, count(*) 
FROM autor, cita, obra
WHERE obra.autor=autor.id
AND cita.obra=obra.id
AND cita.id in ( %s )
GROUP BY autor.id, autor.escuela, autor.nombre
ORDER BY autor.nombre ASC;

数据:

citaid=request.cookies.get("idNote")

光标执行:

Cursor.execute(review_authors, citaid)

通知错误:

C:\Users\sebap\Web\venv\lib\site-packages\pymysql\cursors.py:170: Warning: (1292, "Truncated incorrect DOUBLE value: '5302,5303,354,501'") result = self._query(query)

再次感谢

最佳答案

您需要做的就是在查询中添加占位符 %s
然后变量将进入其适当的位置。

citaid=request.cookies.get("idNote")
placeholders = ",".join(['%s']*len(citaid))
review_authors = """SELECT autor.id, autor.escuela, autor.nombre, COUNT(*)
FROM autor, cita, obra
WHERE obra.autor=autor.id
AND cita.obra=obra.id
AND cita.id in ({})
GROUP BY autor.id, autor.escuela, autor.nombre
ORDER BY autor.nombre ASC;""".format(placeholders)
Cursor.execute(review_authors, citaid)

关于python - Cursor.execute数据添加单引号并中断包含Python中mysql的IN(1,2)语句的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60255522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com