0

我正在用 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')
4

1 回答 1

0

如果您需要按一个字段过滤,请点击此处

 cursor.execute("SELECT * from ref_stocks WHERE Ref_Prod IN (%s)",(list_values[0]))
于 2020-05-01T12:20:11.530 回答