[Data] Python Pandas的to_sql错误

博客首页 » Data Python Pandas的to_sql错误

发布于 10 Sep 2015 07:34
标签 blog
在使用tushare to_sql生成数据库的时候,报了一个SQL错,详情如下。

import tushare as ts
from sqlalchemy import create_engine
import tushare as ts

df = ts.get_hist_data('600848')
engine = create_engine('mysql://demo:1.0.0.721|ssapomed#1.0.0.721|ssapomed/stockdb?charset=utf8', encoding='utf-8', echo=True)

df.to_sql('d_data', engine)

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1170, "BLOB/TEXT column 'date' used in key specification without a key length") [SQL: u'CREATE INDEX ix_d_data_date ON d_data (date)']

是因为pandas的io.py自动把所有string类型转换成mysql的text类型。用text而作为索引的话,mysql是有长度限制的,需要在create index的时候指定。
这时,table是生成出来了,只是index没有生成。手动生成index,以后指定append就可以了。

engine.execute('CREATE INDEX ix_d_data_date ON d_data (date(20))');

#存入数据库
#df.to_sql('d_data',engine)

#追加数据到现有表
df.to_sql('d_data',engine,if_exists='append')

http://tushare.org/storing.html#mysql
http://jingyan.baidu.com/article/3065b3b68d7fb5becff8a494.html


本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • Data Python Pandas的to_sql错误

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment