Cursor.execute数据使用python中的mysql在(1,2)语句中添加单引号和分隔符

2024-09-28 17:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

谢谢你的阅读。 尝试将变量发送到cursor.execute(查询,变量)时遇到问题。查询包含在(%s)语句中,变量包含逗号分隔的整数。 当pythons execute向变量添加单引号时,就会出现问题。它打破了这个疑问。所以 如何覆盖此行为以丢弃引号

查询: 评论作者=

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)

再次感谢


Tags: andidexecuteby整数语句querycursor
1条回答
网友
1楼 · 发布于 2024-09-28 17:31:21

您需要做的是在查询中放置占位符%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)

相关问题 更多 >