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

使用SQLAlchemy连接远程MySQL执行SQL时遇ObjectNotExecutableError

解决SQLAlchemy执行SQL时的ObjectNotExecutableError错误

这个错误是因为你使用的SQLAlchemy版本为2.0及以上,该版本要求execute()方法必须传入可执行的SQL表达式对象,不能直接传入原始字符串SQL。解决步骤如下:

  • 从sqlalchemy导入text函数,用它包裹你的SQL字符串
  • 将con.execute()的参数替换为text('你的SQL语句')

修改后的完整代码:

from sqlalchemy import create_engine, text
import os

db_user = os.environ['USER']
db_password = os.environ['PWD']
db_host = os.environ['HOST']
engine = create_engine(f"mysql+pymysql://{db_user}:{db_password}@{db_host}")

with engine.connect() as con:
  rs = con.execute(text('SELECT schema_name FROM information_schema.schemata;'))
  for row in rs:
    print(row)

额外补充:

  • 原代码缺少import os语句,运行时会触发报错,需要补上
  • 若执行增删改类操作,SQLAlchemy 2.0版本需手动调用con.commit()提交事务;查询类操作无需提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:52:39