You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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']})
    

额外注意:你的原代码存在两处语法错误,需要先修正:

  1. as.text应为sa.text(对应你导入sqlalchemy时的别名)
  2. pd.read_sql的调用语句缺少闭合括号

内容的提问来源于stack exchange,提问作者ATidedHumour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:02:12