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

使用WRDS库v3.1.2时连接出现AttributeError衍生的ObjectNotExecutableError问题

WRDS库v3.1.2时连接出现AttributeError衍生的ObjectNotExecutableError问题

问题分析

从你提供的错误栈能明确看出,问题根源出在WRDS库v3.1.2的load_library_list()方法里:它直接把原始SQL字符串传给了SQLAlchemy的connection.execute()方法,但在较新的SQLAlchemy版本(尤其是2.0+)中,已经不再支持直接执行字符串形式的查询,必须将字符串包装成SQLAlchemy的text()对象才能执行。

这就是为什么你用v3.1.1能正常工作,升级到v3.1.2就报错——WRDS团队在最新版本的代码里可能遗漏了对SQLAlchemy 2.0+兼容性的处理,没有给那个查询字符串做必要的包装。

解决方案

这里有几个可行的解决办法:

  1. 降级WRDS库到v3.1.1
    既然你已经确认v3.1.1版本可以正常运行,这是最直接的临时方案。执行以下命令降级:

    pip install wrds==3.1.1
    
  2. 手动修补WRDS库的代码
    如果你想继续使用v3.1.2,可以修改WRDS库中出错的文件:

    • 找到你的conda环境中WRDS库的sql.py文件(路径类似~\anaconda3\envs\playground\lib\site-packages\wrds\sql.py)
    • 打开文件,定位到load_library_list()方法中的这一行:
      cursor = self.connection.execute(query)
      
    • 修改为以下内容(先导入text工具,再包装查询字符串):
      from sqlalchemy import text
      cursor = self.connection.execute(text(query))
      

    这样就把原始字符串查询转换成了SQLAlchemy可识别的执行对象,解决兼容性问题。

  3. 等待WRDS官方修复
    这明显是WRDS库v3.1.2的一个兼容性bug,你可以在WRDS的官方代码仓库提交issue反馈,或者关注他们的版本更新,等待官方发布修复版本。

额外说明

这个错误的核心是SQLAlchemy 2.0+的API变更:不再接受原始字符串作为execute()的参数,必须使用text()、ORM查询或其他标准可执行对象。WRDS v3.1.2的代码没有适配这个变化,才导致了报错。

备注:内容来源于stack exchange,提问作者shenflow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:42:36