我正在用 Flask 和 MySQL 做一个小应用程序。我正在尝试在表格中显示某些项目,但我想仅基于数据库的 1 个字段过滤这些项目。
这个例子正在做我需要的,但前提是我的列表有 2 个项目。这个想法是我可以将它与“n”个项目一起使用:
@app.route('/search2', methods=['GET', 'POST'])
def search2():
if request.method == 'POST':
contents= request.form['referencias']
list_values = contents.split(" ")
cursor.execute("SELECT * from ref_stocks WHERE Ref_Prod IN (%s,%s)", (list_values[0],list_values[1]))
conn.commit()
data = cursor.fetchall()
return render_template('search2.html', data=data)
return render_template('search2.html')
最后我找到了办法。也许它可以帮助其他有同样问题的人:
def convert(lista_ref):
return tuple(i for i in lista_ref)
def search2():
if request.method == 'POST':
contents= request.form['referencias']
# convert to list
list_values = contents.split(" ")
# Items in list
number_list= len(list_values)
# convert to tuple
lista_ref = list_values
lista_nueva = convert(lista_ref)
#concatenating values
art = ("%s," * number_list)[:-1]
where_in = "(" + art + ")"
cursor.execute("SELECT * from ref_stocks WHERE PrimeroDeRef_Prod IN " + where_in, lista_nueva)
conn.commit()
data = cursor.fetchall()
return render_template('search2.html', data=data)
return render_template('search2.html')