我在Pandas和Sqlalchemy的帮助下使用sqlite数据库开发解析器。我正在从文件中读取并将值分配到列中。在
dataFrame = pd.read_fwf('gf1401.gam',colspecs=colspaces,skiprows=37,nrows=1764)
dataFrame.columns=['elem','index','E','J','label','glande']
dataFrame['glande']=dataFrame['glande'].map(lambda x: '%1.3f' % x)
print dataFrame.head()
engine = create_engine('sqlite:///dab.sqlite')
conn = engine.raw_connection()
dataFrame.to_sql(name='parser', con=conn, if_exists='append')
最后一行给出了一个奇怪的错误
sqlite3.OperationalError: table parser has no column named level_0
这就是我如何使用sqlalchemy创建数据库的方法
^{pr2}$如您所见,我甚至没有一个名为level0的列。 请帮忙。 我没有在pandas中使用id列,因为sqlite会自动为主键插入值。 我只想将数据帧中的数据插入到sqlite数据库中,并添加一个列作为主键
问题在于您已经拥有的索引列。Pandas尝试将dataframe的索引作为列“index”插入,但由于已经有一个名为“index”的列,因此它使用下一个选项,即“level_0”。但当您追加到表中时,此列不存在。这可能是熊猫身上的一个虫子,但现在有一些解决办法。在
目前可能的解决办法是:
dataFrame.to_sql(...., index=False)
dataFrame.to_sql(...., index_label='id')
to_sql
创建数据库表本身(不追加),那么就不需要用python定义表了。在相关问题 更多 >
编程相关推荐