2015-12-01 42 views
1

我試圖更新用戶表中給出的一些條件中的所有用戶。Where /使用字典(或** kwargs)從表格對象中過濾

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

可以創建這樣的條款清單,並把它傳遞給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])