我有一个字典,用于查询数据库中的匹配项。我有一个单独的查询行不适合我。如果我有这样的列表:
user['names']= [Alice, Bob, John]
由于这是一个列表,我试图使用这样的东西:
q.filter(UserTable.firstname in user['firstnames'])
但无论出于何种原因,这都行不通。但是,我知道Bob在数据库中。当我手动下拉所有查询时,我可以看到其中一行中有名称。如果我这样做:
q.filter(UserTable.firstname == user['firstnames'][1]) #Only does Bob
有效。当我手动提取所有查询时,将每行转换为字典,然后执行
row[#row_that_matches].firstname in user['names']
也有效。但由于某些原因,使用sqlalchemy中的“in”关键字无法按预期工作。有没有人知道可以对值列表中的某些内容进行sqlalchemy查询的替代方法?
答案 0 :(得分:1)
使用in_()
column method根据序列测试列:
q.filter(UserTable.firstname.in_(user['firstnames'])
请参阅对象关系教程的Common Filter Operations section:
IN
:query.filter(User.name.in_(['ed', 'wendy', 'jack'])) # works with query objects too: query.filter(User.name.in_( session.query(User.name).filter(User.name.like('%ed%')) ))