我有一个网站,它从复选框获取用户输入并从MySQL表中返回相应的行。Flask/MySQL WHERE IN子句不能用于一个条目
例如,用户可以选择一对颜色,网站将显示表格中那些颜色的对象。
问题是,当用户只选择一种颜色的MySQL查询没有正确创建,我得到一个错误。注意colors
阵列下面:
所以此工程:
import MySQLdb
db = MySQLdb.connect(host="...", user="...", port=..., db="...", passwd="...")
colors = ["red", "blue"]
cursor.execute("SELECT * FROM `objects` WHERE `color` IN %s",(colors,))
这并不:
import MySQLdb
db = MySQLdb.connect(host="...", user="...", port=..., db="...",passwd="...")
colors = ["red"]
cursor.execute("SELECT * FROM `objects` WHERE `color` IN %s", (colors,))
是否有办法来纠正呢?目前,我暂时添加了一个虚假的“颜色”(数据库中没有链接任何对象),但这显然不是一个理想的解决方案。
'IN'应该有括号...'IN(%s)'。 –
@MarcB当我这样做时,我得到以下错误:“1064,”你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第1行'))'处使用正确的语法“ –
这将有助于查看MySQL查看(从服务器日志中)的查询。无论如何,这个答案可能有所帮助:http://stackoverflow.com/questions/4574609/executing-select-where-in-using-mysqldb –