使用字典(或 **kwargs)从 Table 对象中哪里/过滤器

use*_*693 4 python sqlalchemy

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

update = ({"username" : "user1"}, {"address" : "1234", "password" : "newpass"})
users = Table(...)
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样的查询:

users.update().where(**update[0]).values(update[1])
users.select().filter_by(**update[0]).update(update[1])
Run Code Online (Sandbox Code Playgroud)

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

session.query(Users).filter_by(**update[0])
Run Code Online (Sandbox Code Playgroud)

表对象有类似物吗?

r-m*_*m-n 7

您可以创建 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].items()]
users.update().where(and_(*where_clauses)).values(**update[1])
Run Code Online (Sandbox Code Playgroud)

  • 我想知道是否已经到了将 `iteritems()` 更新为 `items()` 的时候了:) (2认同)