Pandas csv到sqlite3 - sqlalchemy dtype ValueError

时间:2016-10-14 00:09:18

标签: python sqlite pandas

我正在尝试将表中的列的dtypes设置为插入到sqlite文件中。我是sqlalchemy的新手,无法弄清楚如何设置每列的dtype。

注意:我只是为了让它正常工作而将它们全部改为NUMERIC。当我通过ValueError异常时,我会将它们更改为他们需要的内容。

import pandas
import sqlite3
import sqlalchemy

conn = sqlite3.connect('finances.sqlite')

vang401k = pandas.read_csv('/Google Drive/PF/401k.csv')

dtypes = {
        'CreateDate': sqlalchemy.NUMERIC(),
        'Account': sqlalchemy.NUMERIC(),
        'Contributed': sqlalchemy.NUMERIC(),
        'MonthlyReturns': sqlalchemy.NUMERIC(),
        'Performance': sqlalchemy.NUMERIC(),
        'Totals': sqlalchemy.NUMERIC(),
        'MonthChange': sqlalchemy.NUMERIC(),
        'YTDReturn': sqlalchemy.NUMERIC(),
        'YTDROI': sqlalchemy.NUMERIC()
         }

vang401k.to_sql('vanguard401k', conn, if_exists='replace', index=False, dtype=dtypes)

这会引发ValueError异常

ValueError: YTDROI (NUMERIC) not a string

我是否遗漏了某些内容或使用sqlalchemy.types格式错误了?

另外,如果我尝试 from sqlalchemy.types import String并将所有dtypes更改为

dtypes = {
            'CreateDate': String,
            'Account': String, ...

我得到了一个不同的例外

ValueError: YTDROI (<class 'sqlalchemy.sql.sqltypes.String'>) not a string

如果改变了任何内容,也使用Python 3.5.1

0 个答案:

没有答案