当我使用to_sql方法将Pandas数据帧写入SQLite数据库时,即使使用if_exists='append'
,它也会更改表的.schema
。例如执行后
with sqlite3.connect('my_db.sqlite') as cnx:
df.to_sql('Resolved', cnx, if_exists='append')
原始.schema
:
CREATE TABLE `Resolved` (
`Name` TEXT NOT NULL COLLATE NOCASE,
`Count` INTEGER NOT NULL,
`Obs_Date` TEXT NOT NULL,
`Bessel_year` REAL NOT NULL,
`Filter` TEXT NOT NULL,
`Comments` TEXT COLLATE NOCASE
);
更改为:
CREATE TABLE Resolved (
[Name] TEXT,
[Count] INTEGER,
[Obs_Date] TEXT,
[Bessel_year] REAL,
[Filter] TEXT,
[Comments] TEXT
);
如何保存表的原始方案?我使用pandas 0.14.0,Python 2.7.5
从0.14(您正在使用的)开始,sql函数被重构为使用
sqlalchemy
来改进功能。请参阅此页上的whatsnew和docs。原始的sqlite3连接仍然支持作为回退(但这是唯一不支持sqlalchemy的sql风格)。
使用sqlalchemy应该可以解决这个问题。为此,您只需创建一个sqlalchemy引擎,而不是直接的sqlite连接
cnx
:但是我用sqlite cnx fallback选项为这个案例提交了一个问题:https://github.com/pydata/pandas/issues/7355
相关问题 更多 >
编程相关推荐