簡體   English   中英

通過主鍵將Pandas數據幀附加到sqlite表

[英]Appending Pandas dataframe to sqlite table by primary key

我想將Pandas數據幀附加到名為“NewTable”的sqlite數據庫中的現有表中。 NewTable有三個字段(ID,Name,Age),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表,以便附加數據幀中的新鍵,但表中已存在的鍵不是?

謝謝。

您可以使用SQL功能insert or replace

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

http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.io.sql.write_frame.html

好奇,如果你嘗試replace

if_exists: {‘fail’, ‘replace’, ‘append’}, default ‘fail’

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM