gpt4 book ai didi

python - 使用 sqlalchemy 将 pandas 数据框插入 mysql

转载 作者:行者123 更新时间:2023-11-28 20:39:38 24 4
gpt4 key购买 nike

我只是尝试将 pandas 数据框写入 ubuntu 上的本地 mysql 数据库。

from sqlalchemy import create_engine
import tushare as ts

df = ts.get_tick_data('600848', date='2014-12-22')
engine = create_engine('mysql://user:passwd@127.0.0.1/db_name?charset=utf8')
df.to_sql('tick_data',engine, flavor = 'mysql', if_exists= 'append')

然后弹出错误

biggreyhairboy@ubuntu:~/git/python/fjb$ python tushareDB.py 
Error on sql SHOW TABLES LIKE 'tick_data'
Traceback (most recent call last):
File "tushareDB.py", line 13, in <module>
df.to_sql('tick_data', con = engine,flavor ='mysql', if_exists= 'append')
File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 1261, in to_sql
self, name, con, flavor=flavor, if_exists=if_exists, **kwargs)
File "/usr/lib/python2.7/dist-packages/pandas/io/sql.py", line 207, in write_frame
exists = table_exists(name, con, flavor)
File "/usr/lib/python2.7/dist-packages/pandas/io/sql.py", line 275, in table_exists
return len(tquery(query, con)) > 0
File "/usr/lib/python2.7/dist-packages/pandas/io/sql.py", line 90, in tquery
cur = execute(sql, con, cur=cur)
File "/usr/lib/python2.7/dist-packages/pandas/io/sql.py", line 53, in execute
con.rollback()
AttributeError: 'Engine' object has no attribute 'rollback'

数据框不为空,数据库已准备就绪,没有表,我尝试了其他方法在 python 中使用 mysqldb 创建表并且工作正常。

相关问题: Writing to MySQL database with pandas using SQLAlchemy, to_sql但没有解释实际原因

最佳答案

您使用的似乎是旧版本的 pandas。我做了一个快速的 git bisect 来找到 pandas 的版本,其中第 53 行包含 con.rollback(),并在 v0.12 找到了 pandas,这是在 SQLAlchemy 支持被添加到 execute 之前 函数。

如果您卡在这个版本的 pandas 上,您将需要使用原始 DBAPI 连接:

df.to_sql('tick_data', engine.raw_connection(), flavor='mysql', if_exists='append')

否则,更新 pandas 并按照您的意愿使用引擎。请注意,使用 SQLAlchemy 时不需要使用 flavor 参数:

df.to_sql('tick_data', engine, if_exists='append')

关于python - 使用 sqlalchemy 将 pandas 数据框插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37627520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com