Pandas read_sql() - AttributeError: 'Engine' object has no attribute 'cursor'
Pandas read_sql() - AttributeError: 'Engine' object has no attribute 'cursor'
我正在尝试使用 pandas read_sql() 方法和 python3+sqlalchemy+pymysql
从 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)
收到以下错误-
AttributeError: 'Engine' object has no attribute 'cursor'
当我尝试传递 'connection' 变量而不是 'engine' 时,如下所示 -
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)
它说 -
AttributeError: 'Connection' object has no attribute 'cursor'
我做错了什么?
我想你正在寻找 and sqlalchemy
is another way of query db , check with https://towardsdatascience.com/sqlalchemy-python-tutorial-79a577141a91
import sqlalchemy as sq
engine = sq.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
connection = engine.connect()
metadata = sq.MetaData()
persons = sq.Table('persons', metadata, autoload=True, autoload_with=engine)
Ret = connection.execute(sq.select([persons]))
youdf=pd.DataFrame(Ret.fetchall())
参考 - https://github.com/pandas-dev/pandas/issues/23030#issuecomment-428140488
当我
时问题消失了
- 保存了我的工作簿
- 重启电脑
- 重新加载
好像缓存了什么东西。我可以通过传递 'engine' 引用 -
来使用 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)
这可能是因为版本不匹配。我在以前工作正常的旧笔记本上遇到了类似的错误:
AttributeError: 'Engine' object has no attribute 'execution_options'
经过几次测试,我发现问题出现在 pandas 1.1.0 中。在 release notes 中,SQLAlchemy 的最低版本是 1.1.4。将 SQLAlchemy 升级到这个版本解决了这个问题。
我正在尝试使用 pandas read_sql() 方法和 python3+sqlalchemy+pymysql
从 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)
收到以下错误-
AttributeError: 'Engine' object has no attribute 'cursor'
当我尝试传递 'connection' 变量而不是 'engine' 时,如下所示 -
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)
它说 -
AttributeError: 'Connection' object has no attribute 'cursor'
我做错了什么?
我想你正在寻找 sqlalchemy
is another way of query db , check with https://towardsdatascience.com/sqlalchemy-python-tutorial-79a577141a91
import sqlalchemy as sq
engine = sq.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
connection = engine.connect()
metadata = sq.MetaData()
persons = sq.Table('persons', metadata, autoload=True, autoload_with=engine)
Ret = connection.execute(sq.select([persons]))
youdf=pd.DataFrame(Ret.fetchall())
参考 - https://github.com/pandas-dev/pandas/issues/23030#issuecomment-428140488
当我
时问题消失了- 保存了我的工作簿
- 重启电脑
- 重新加载
好像缓存了什么东西。我可以通过传递 'engine' 引用 -
来使用 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)
这可能是因为版本不匹配。我在以前工作正常的旧笔记本上遇到了类似的错误:
AttributeError: 'Engine' object has no attribute 'execution_options'
经过几次测试,我发现问题出现在 pandas 1.1.0 中。在 release notes 中,SQLAlchemy 的最低版本是 1.1.4。将 SQLAlchemy 升级到这个版本解决了这个问题。