我想將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