我正在尝试将表中的列的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