Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用sqlalchemy将数据帧插入mysql_Python_Mysql_Pandas_Sqlalchemy - Fatal编程技术网

Python 使用sqlalchemy将数据帧插入mysql

Python 使用sqlalchemy将数据帧插入mysql,python,mysql,pandas,sqlalchemy,Python,Mysql,Pandas,Sqlalchemy,我只是尝试在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, f

我只是尝试在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'
biggreyhairboy@ubuntu:~/git/python/fjb$python tushareDB.py
sql显示表(如“勾选数据”)时出错
回溯(最近一次呼叫最后一次):
文件“tushareDB.py”,第13行,在
to_sql('tick_data',con=engine,flavor='mysql',如果_存在='append')
文件“/usr/lib/python2.7/dist packages/pandas/core/frame.py”,第1261行,在to_sql中
self,name,con,flavor=flavor,如果存在=如果存在,**kwargs)
文件“/usr/lib/python2.7/dist packages/pandas/io/sql.py”,第207行,在write_框架中
exists=表_exists(名称、con、味道)
文件“/usr/lib/python2.7/dist packages/pandas/io/sql.py”,第275行,在表_中存在
返回len(tquery(query,con))>0
文件“/usr/lib/python2.7/dist packages/pandas/io/sql.py”,第90行,在tquery中
cur=execute(sql、con、cur=cur)
文件“/usr/lib/python2.7/dist packages/pandas/io/sql.py”,执行中的第53行
con.rollback()
AttributeError:“引擎”对象没有属性“回滚”
dataframe不是空的,数据库已经准备好了,没有表,我已经尝试了用mysqldb用python创建表的其他方法,效果很好

一个相关问题:
但没有解释实际原因

您似乎在使用旧版本的熊猫。我做了一个快速的git对分来查找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')

将来,如果您发布您遇到问题的模块版本,这将非常有用。原始连接和将pandas更新到版本0.18.1都解决了问题。但是您不应该在pandas 0.18.1上使用原始连接。您是否尝试不使用?抱歉,不清楚,我在升级熊猫之前使用了原始连接。