多个复选框sqlalchemy删除

时间:2017-01-19 11:57:05

标签: python html sqlalchemy

我是SQLAlchemy和HTML表单的新手,需要了解如何在我的dB表中删除与我的HTML表单中的复选框相对应的多行。因为它只是从表中删除第一个被检查的项目。我希望这可以在SQLAlchemy方面没有for循环的情况下完成吗?

这是我的HTML代码: -

<ul>
            {% for alert in alerts %}
                  <li>   <input name="alert_id" type="checkbox" value="{{ alert.alert_id }}"/> Ticker:{{ alert.ticker }}    Price:{{ alert.price }}</li>
            {% endfor %}
</ul>  

烧瓶python SQLAlchemy脚本: -

if request.method == "POST":
        if request.form["alert_id"]:
            Alert.query.filter(Alert.alert_id == request.form["alert_id"]).delete() 
            db.session.commit()

1 个答案:

答案 0 :(得分:0)

这一行

Alert.query.filter(Alert.alert_id == request.form["alert_id"]).delete()

应该是

Alert.query.filter(Alert.alert_id.in_(request.form["alert_id"])).delete()

执行SELECT * FROM <table_name> WHERE alert_id IN (<val>, <val2>)

此外,最好坚持使用request.form.getlist("alert_id")代替request.form["alert_id"],以便始终确保list而不是KeyError以防alert_id }不存在。