使用Dictionary(或** kwargs)从Table对象中过滤/过滤

时间:2015-12-01 17:19:35

标签: python sqlalchemy

我正在尝试根据一些标准更新用户表中的所有用户。

update = ({"username" : "user1"}, {"address" : "1234", "password" : "newpass"})
users = Table(...)

我正在尝试查询:

users.update().where(**update[0]).values(update[1])
users.select().filter_by(**update[0]).update(update[1])

通过会话,我知道我可以做到:

session.query(Users).filter_by(**update[0])

是否有表格对象的模拟?

1 个答案:

答案 0 :(得分:2)

您可以创建where子句列表并将其传递给where()

from sqlalchemy import and_

update = ({"username" : "user1"}, {"address" : "1234", "password" : "newpass"})

where_clauses = [users.c[key]==value for (key, value) in update[0].iteritems()]
users.update().where(and_(*where_clauses)).values(**update[1])