Pandas read_sql() - AttributeError: 'Engine' 对象没有属性 'cursor'

Adi*_*Adi 6 python sqlalchemy pandas pymysql

我正在尝试使用 python3+sqlalchemy+pymysql 使用 pandas read_sql() 方法从 MySQL 查询中读取数据

我尝试按照以下教程进行操作 -

https://pythondata.com/quick-tip-sqlalchemy-for-mysql-and-pandas/

https://www.youtube.com/watch?v=M-4EpNdlSuY

https://www.programcreek.com/python/example/101381/pandas.read_sql

代码看起来一切都很好

import pandas
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
df = pandas.read_sql("SELECT * FROM persons", con = engine)
Run Code Online (Sandbox Code Playgroud)

收到以下错误 -

AttributeError: 'Engine' 对象没有属性 'cursor'

当我尝试传递“连接”变量而不是“引擎”时,如下所示 -

import pandas
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
connection = engine.connect()
df = pandas.read_sql("SELECT * FROM persons", con = connection)
Run Code Online (Sandbox Code Playgroud)

它说 -

AttributeError: 'Connection' 对象没有属性 'cursor'

我究竟做错了什么?

Adi*_*Adi 9

参考 - https://github.com/pandas-dev/pandas/issues/23030#issuecomment-428140488

当我

  • 保存了我的工作簿
  • 重新启动了 PC
  • 重装上阵

好像有什么东西被缓存了。我可以通过传递“引擎”引用来使用 read_sql() 和其他 Pandas sql 函数 -

import pandas
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
df = pandas.read_sql("SELECT * FROM persons", con = engine)
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答,我尝试关闭我的 jupyter 笔记本并重新启动它,这确实有效。没有必要重新启动我的计算机。谢谢 (2认同)