通过主键将Pandas数据框追加到sqlite表

发布于 2021-01-29 17:39:06

我想将Pandas数据框附加到名为“
NewTable”的sqlite数据库中的现有表上。NewTable具有三个字段(ID,名称,年龄),ID是主键。我的数据库连接:

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”不在中。我尝试将数据框追加到NewT​​able。

from pandas.io import sql 
sql.write_frame(test,name='NewTable',con=conn,if_exists='append')

这将引发错误:

IntegrityError: column ID is not unique

该错误很可能是因为键“
L1”已经在NewTable中。数据框中的任何条目均未附加到NewT​​able。但是,我可以毫无问题地将具有新键的数据帧附加到NewT​​able。

是否有一种简单的方法(例如,不循环)将Pandas数据帧附加到sqlite表中,以便将数据帧中的新键附加到表中,而表中已经存在的键不附加?

谢谢。

关注者
0
被浏览
141
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用SQL功能 insert or replace

    query=''' insert or replace into NewTable (ID,Name,Age) values (?,?,?) '''
    conn.executemany(query, test.to_records(index=False))
    conn.commit()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看