在sqlalchemy中使用复合键删除多个记录

时间:2019-11-27 11:36:36

标签: python postgresql python-2.7 orm sqlalchemy

我有一个带有复合主键的表。

ReportsTable id1,id2,data,...

我想基于组合键列表删除多行。 例如。 [(1,0),(1,1),(2,0),(3,0),(3,1),(3,2),(3,3)]

如何使用sqlalchemy删除与ID列表匹配的记录?我试图通过在循环中链接or_来构造查询来实现这一点。

tuple_list = [(1,0),(1,1),(2,0),(3,0),(3,1),(3,2),(3,3)]
with runtime.terminating_sn('adb', 'user', cid) as session:
    base_or = or_(
        and_(Reports.id1 == tuple_list[0][0], Reports.id2 == tuple_list[0][1]),
        and_(Reports.id1 == tuple_list[1][0], Reports.id2 == tuple_list[1][1]))
    for i in range(2, len(tuple_list)):
        base_or = or_(base_or, and_(Reports.id1 == tuple_list[i+1][0],
                                    Reports.id2 == tuple_list[i+1][1]))
    session.query(Reports).filter(base_or).delete()
    session.commit()

我想知道在python中是否还有更好的方法。

0 个答案:

没有答案