作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个网站,它从复选框中获取用户输入并从 MySQL 表中返回相应的行。
例如,用户可以选择几种颜色,网站将显示表格中具有该颜色的对象。
问题是当用户只选择一种颜色时,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,))
有没有办法解决这个问题?现在,我暂时添加了一个伪造的“颜色”(在数据库中没有链接到它的对象),但这显然不是一个理想的解决方案。
最佳答案
您可以使用 .join 运算符。
colors = ["red", "blue"]
colors = ",".join(colors)
output:'red,blue'
colors = ["red"]
colors = ",".join(colors)
output: 'red'
所以代码看起来像
import MySQLdb as mdb
con = mdb.connect('', '','','')
with con:
cur = con.cursor(mdb.cursors.DictCursor)
colors = ["red","blue"]
query = """SELECT * FROM objects where color in (""" + ",".join(colors) + """)
cur.execute(users_query)
rows = cur.fetchall()
关于python - Flask/MySQL WHERE IN 子句不能只处理一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474880/
我是一名优秀的程序员,十分优秀!