Cursor.execute 数据添加单引号并中断包含 IN(1,2) 语句且 mysql in python 的查询
Cursor.execute data adds single quotes marks and breaks query that contains IN(1,2) statement with mysql in python
感谢阅读。
我在尝试将变量发送到 cursor.execute(query,variable) 时遇到问题。查询包含 IN (%s) 语句,变量包含以逗号分隔的整数。
当 pythons 执行显然向变量添加单引号时会出现问题。它打破了查询。所以...
如何覆盖此行为以丢弃引号?
查询:
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:
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)
感谢阅读。 我在尝试将变量发送到 cursor.execute(query,variable) 时遇到问题。查询包含 IN (%s) 语句,变量包含以逗号分隔的整数。 当 pythons 执行显然向变量添加单引号时会出现问题。它打破了查询。所以... 如何覆盖此行为以丢弃引号?
查询: 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:
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)