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

Pandas read_sql_query结合SQLAlchemy 2.0报错,求兼容解决方案

问题分析与解决方案

这是兼容性问题,旧版本Pandas对SQLAlchemy 2.0的text()查询存在参数传递冲突,导致报错。

报错原因

SQLAlchemy 2.0中text()对象会携带查询相关的元信息(包括潜在的schema定义),而旧版Pandas的read_sql_query方法在处理时,会错误地将连接对象的schema参数与text()对象中的信息重复传递,触发"multiple values for argument 'schema'"错误。

适配SQLAlchemy 2.0的解决方法

方法1:直接传递SQL字符串(无需text()包裹)

read_sql_query支持直接接收SQL字符串,无需额外用text()处理,同时该方法直接返回DataFrame,不需要再用pd.DataFrame()二次包装:

sql_query = '''
    SELECT [StartDate] 
      , [EndDate] 
    FROM [dbo].[Accounts]
'''

with source_engine.connect() as source_connection:
    df_source = pd.read_sql_query(sql_query, source_connection)

方法2:使用text()时显式指定schema=None

如果需要用text()处理带参数绑定的查询,可通过显式设置schema=None避免参数冲突:

from sqlalchemy import text

sql_query = text('''
    SELECT [StartDate] 
      , [EndDate] 
    FROM [dbo].[Accounts]
''')

with source_engine.connect() as source_connection:
    df_source = pd.read_sql_query(sql_query, source_connection, schema=None)

方法3:升级Pandas到兼容版本

升级Pandas至1.5.3及以上(或2.x系列),新版本已修复与SQLAlchemy 2.0的参数适配问题,无需修改代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:35:23