我有一个带有复合主键的表。
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中是否还有更好的方法。