python的等价物是什么;在';但是对于炼金术

python的等价物是什么;在';但是对于炼金术,python,mysql,list,sqlalchemy,Python,Mysql,List,Sqlalchemy,我有一本字典,用于查询数据库中的匹配项。我只有一条查询行不适合我。如果我有这样一个列表: user['names']= [Alice, Bob, John] q.filter(UserTable.firstname in user['firstnames']) 因为这是一个列表,所以我尝试使用如下内容: user['names']= [Alice, Bob, John] q.filter(UserTable.firstname in user['firstnames']) 但不管出于

我有一本字典,用于查询数据库中的匹配项。我只有一条查询行不适合我。如果我有这样一个列表:

user['names']= [Alice, Bob, John]
 q.filter(UserTable.firstname in user['firstnames'])
因为这是一个列表,所以我尝试使用如下内容:

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查询的替代方法吗?

使用来根据序列测试列:

q.filter(UserTable.firstname.in_(user['firstnames'])
请参见对象关系教程的第页:

中的

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%'))
))

我想你可能想试试内置函数。Usertable.firstname.in(user['firstnames'])您和max是正确的,谢谢!我在尝试时没有出现任何错误,我应该知道会有内置的sqlalchemy函数。感谢您的澄清:)