如何让SQLAlchemy接受IN运算符的列表型命名参数?
解决SQLAlchemy中IN运算符的列表型命名参数问题
方法一:使用带
expanding=True的绑定参数
这种方式让SQLAlchemy自动将列表参数展开为IN子句所需的多个占位符,适配绝大多数数据库语法:import pandas as pd import sqlalchemy as sa query = sa.text("SELECT * FROM students WHERE name IN :name") # 绑定参数时指定expanding=True,支持列表类型参数 query = query.bindparams(sa.bindparam('name', expanding=True)) pd.read_sql(query, con=conn, params={'name': ['Ravi', 'Rami']})方法二:调整SQL语句占位符写法(部分数据库适用)
将IN子句的占位符用括号包裹,直接传入列表参数即可:import pandas as pd import sqlalchemy as sa query = sa.text("SELECT * FROM students WHERE name IN (:name)") pd.read_sql(query, con=conn, params={'name': ['Ravi', 'Rami']})
额外注意:你的原代码存在两处语法错误,需要先修正:
as.text应为sa.text(对应你导入sqlalchemy时的别名)pd.read_sql的调用语句缺少闭合括号
内容的提问来源于stack exchange,提问作者ATidedHumour
相关产品推荐
相关产品推荐

