我想将Pandas数据框追加到名为“NewTable”的sqlite数据库中的现有表中。 NewTable有三个字段(ID,Name,Age),ID是主键。我的数据库连接:通过主键将熊猫数据框添加到sqlite表中
import sqlite3
DB='<path>'
conn = sqlite3.connect(DB)
我要追加数据框:
test=pd.DataFrame(columns=['ID','Name','Age'])
test.loc[0,:]='L1','John',17
test.loc[1,:]='L11','Joe',30
如上所述,ID是newtable的主键。关键'L1'已经在NewTable中,但'L11'关键字不是。我尝试将数据框追加到NewTable。
from pandas.io import sql
sql.write_frame(test,name='NewTable',con=conn,if_exists='append')
这将引发一个错误:
IntegrityError: column ID is not unique
的错误是可能的事实是关键 'L1' 已经在newtable中。数据框中的任何条目都不会附加到NewTable中。但是,我可以使用NewTable的新密钥附加数据框而不会出现问题。
有没有简单的方法(例如,没有循环)将Pandas数据框附加到sqlite表中,以便追加数据框中的新键,但表中已经存在的键不是?
谢谢。
对于它的价值,如果你发现自己做了很多,sqlalchemy是一个很好的工具,可以与python进行交互。如果你设置了它,session.merge(row)函数将完成这个工作,用一个现有的主键替换一行,否则添加它。 – RussellStewart
谢谢。我会研究sqlalchemy。 – lmart999