gpt4 book ai didi

python - Flask/MySQL WHERE IN 子句不能只处理一个条目

转载 作者:行者123 更新时间:2023-11-30 23:31:18 24 4
gpt4 key购买 nike

我有一个网站,它从复选框中获取用户输入并从 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/

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