Pandas 2.0.2调用read_sql报AttributeError错误求助及原因咨询
错误原因解析
核心问题:版本不兼容
你碰到的AttributeError: 'Connection' object has no attribute 'exec_driver_sql',根源是pandas 2.0.2 和 SQLAlchemy 1.3.7 版本不兼容:
- pandas 2.0及以后版本重构了SQL交互模块,开始调用SQLAlchemy提供的
exec_driver_sql方法执行查询; - 但
exec_driver_sql是SQLAlchemy 1.4版本才新增的接口,你使用的1.3.7属于旧版本,根本没有这个方法,调用自然触发报错。
为什么昨天正常今天突然报错?
你说没手动更新库,但大概率是环境出现了隐性变化:
- 虚拟环境切换:之前用的是pandas 1.x版本(和SQLAlchemy 1.3完全兼容),今天不小心切换到了装有pandas 2.0.2的环境;
- 间接依赖更新:安装其他包时,被自动升级了pandas;
- 连接逻辑的隐式变化:今天的代码执行路径触发了pandas新的SQLAlchemy调用分支,而之前没走到这一步。
临时方案生效的原因
用engine.raw_connection()代替原engine作为con参数时,返回的是数据库原生的DBAPI连接对象,而非SQLAlchemy封装的Connection对象。pandas处理原生连接时会走旧的执行逻辑,不需要调用exec_driver_sql,因此能避开版本兼容问题。
内容的提问来源于stack exchange,提问作者maiseo4allPYwarrior
相关产品推荐
相关产品推荐

