SqlAlchemy 在 where 子句中包含列表

kha*_*ula 1 python sqlalchemy psycopg2 list bindparam

我在数据库中的表如下

Username    city        Type 
 Anna       Paris        abc 
 Marc       london       abc
 erica      rome         AF 
 Sara       Newyork      cbd 
 silvia      paris        AD
Run Code Online (Sandbox Code Playgroud)

我有一个包含字符串值的列表

typelist = {'abc', 'cbd'}
Run Code Online (Sandbox Code Playgroud)

我想使用 sqlalchemy 查询数据库,从列类型等于列表中的值的表中获取数据:

Username    city        Type 
 Anna       Paris        abc 
 Marc       london       abc
 Sara       Newyork      cbd 
Run Code Online (Sandbox Code Playgroud)

我正在尝试这段代码

sql = "SELECT * FROM table WHERE data IN :values" 
query = sqlalchemy.text(sql).bindparams(values=tuple(typelist))
conn.engine.execute(query)
Run Code Online (Sandbox Code Playgroud)

但它只返回类型列表中的一个值,而不是所有列表值。

Username    city        Type 
 Sara       Newyork      cbd 
Run Code Online (Sandbox Code Playgroud)

inf*_*fra 6

sql = "SELECT * FROM table WHERE data IN :values" 
query = sqlalchemy.text(sql).bindparams(sqlalchemy.bindparam("values", expanding=True))
conn.engine.execute(query, {"values": typelist})
Run Code Online (Sandbox Code Playgroud)

参考:https: //docs.sqlalchemy.org/en/13/core/sqlelement.html#sqlalchemy.sql.expression.bindparam.params.expanding