2

代码非常简单:

import Quandl
import sqlite3

myData = Quandl.get("DMDRN/AAPL_ALLFINANCIALRATIOS")

cnx = sqlite3.connect("APPL.db")
myData.to_sql('AAPL', cnx)

我打电话给Quandl API。它给了我一个熊猫数据框。当我尝试将数据提交到 SQL 表时,我收到此错误

sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

索引是时间戳。

我试过这个 1-如何使用索引将 Pandas 数据帧写入 sqlite 2-将索引设置为其他值 +将 numpy.datetime64 转换为 python 中的字符串对象

对于第一个,我仍然收到错误绑定参数 1 和 2 不起作用。

如果我想将数据框提交到 sqlite 表并将日期保留为索引,我应该做什么(或者最好的方法是什么)。

4

1 回答 1

5

请参阅pandas to_sql 方法给出日期列错误

问题是 sqlite 连接尚不支持写入 datetime64 值。随着即将推出的 pandas 0.15,此错误将得到修复。已经支持编写索引(从 pandas 0.14 开始),并且可以使用index关键字(默认为 True)进行控制。

你有一些解决这个问题的选择:

  • 使用 sqlalchemy 建立连接(为此至少需要 0.14),因为这已经支持写入日期时间值:

    import sqlalchemy
    engine = sqlalchemy.create_engine('sqlite:///APPL.db')
    myData.to_sql('AAPL', engine, index=True)
    
  • 将日期时间索引转换为字符串(然后您可以继续直接使用 sqlite 连接)。你可以这样做:

    myData.index = myData.index.map(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))
    
  • 使用 pandas 开发版(https://github.com/pydata/pandas

于 2014-09-14T10:20:47.770 回答