Fxx*_*ins 12 python sqlalchemy mysql-connector pandas
我正在尝试通过 pandas 数据框将从网站检索的数据存储到 MySQL 数据库中。但是,当我进行函数调用时df.to_sql()
,编译器会给我一条错误消息:AttributeError: 'Connection' object has no attribute 'connect'
。我测试了几次,我确信既不存在连接问题,也不涉及表存在问题。代码本身有什么问题吗?我正在使用的代码如下:
from sqlalchemy import create_engine, text
import pandas as pd
import mysql.connector
config = configparser.ConfigParser()
config.read('db_init.INI')
password = config.get("section_a", "Password")
host = config.get("section_a", "Port")
database = config.get("section_a", "Database")
engine = create_engine('mysql+mysqlconnector://root:{0}@{1}/{2}'.
format(password, host, database),
pool_recycle=1, pool_timeout=57600, future=True)
conn = engine.connect()
df.to_sql("tableName", conn, if_exists='append', index = False)
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪如下所示:
Traceback (most recent call last):
File "/Users/chent/Desktop/PFSDataParser/src/FetchPFS.py", line 304, in <module>
main()
File "/Users/chent/Desktop/PFSDataParser/src/FetchPFS.py", line 287, in main
insert_to_db(experimentDataSet, expName)
File "/Users/chent/Desktop/PFSDataParser/src/FetchPFS.py", line 89, in insert_to_db
df.to_sql(tableName, conn, if_exists='append', index = False)
File "/Users/chent/opt/anaconda3/lib/python3.9/site-packages/pandas/core/generic.py", line 2951, in to_sql
return sql.to_sql(
File "/Users/chent/opt/anaconda3/lib/python3.9/site-packages/pandas/io/sql.py", line 698, in to_sql
return pandas_sql.to_sql(
File "/Users/chent/opt/anaconda3/lib/python3.9/site-packages/pandas/io/sql.py", line 1754, in to_sql
self.check_case_sensitive(name=name, schema=schema)
File "/Users/chent/opt/anaconda3/lib/python3.9/site-packages/pandas/io/sql.py", line 1647, in check_case_sensitive
with self.connectable.connect() as conn:
AttributeError: 'Connection' object has no attribute 'connect'
Run Code Online (Sandbox Code Playgroud)
我使用的pandas版本是1.4.4,sqlalchemy是2.0
我尝试多次执行sql查询,例如,CREATE TABLE xxx IF NOT EXISTS
or SELECT * FROM
,所有这些都给了我我希望看到的结果。
Pan*_*vos 16
我也刚刚遇到这个问题。Pandas 1.x 尚不支持 SqlAlchemy 2。正如相关的 Github 问题所示, Pandas 的下一个版本将需要sqlalchemy<2.0
. 现在您必须使用以下命令降级到 SqlAlchemy 1.4.x:
pip install --upgrade SQLAlchemy==1.4.46
Run Code Online (Sandbox Code Playgroud)
该问题是由于Pandas版本与SqlAlchemy 2.0不兼容造成的。SqlAlchemy 2.0于 2023 年 1 月 28 日发布,而当时最新的 Pandas 版本1.5.3也在 1 月 19 日发布。
熊猫确实支持sqlalchemy.engine.Connection
。来自文档:
缺点:qlalchemy.engine.(引擎或连接)或sqlite3.Connection
使用 SQLAlchemy 可以使用该库支持的任何数据库。为 sqlite3.Connection 对象提供旧版支持。用户负责 SQLAlchemy 可连接的引擎处理和连接关闭(请参阅此处)。
我降级到 SqlAlchemy 1.4.46 并to_sql
停止抱怨。
如果您使用,pip
可以使用以下命令降级:
pip install --upgrade SQLAlchemy==1.4.46
Run Code Online (Sandbox Code Playgroud)
或者
pip install SQLAlchemy
pip install SQLAlchemy==1.4.46
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9595 次 |
最近记录: |