lma*_*999 12 python sqlite pandas
我想将Pandas数据帧附加到名为"NewTable"的sqlite数据库中的现有表中.NewTable有三个字段(ID,Name,Age),ID是主键.我的数据库连接:
import sqlite3
DB='<path>'
conn = sqlite3.connect(DB)
Run Code Online (Sandbox Code Playgroud)
我要附加的数据框:
test=pd.DataFrame(columns=['ID','Name','Age'])
test.loc[0,:]='L1','John',17
test.loc[1,:]='L11','Joe',30
Run Code Online (Sandbox Code Playgroud)
如上所述,ID是NewTable中的主键.键'L1'已经在NewTable中,但键'L11'不在.我尝试将数据框附加到NewTable.
from pandas.io import sql
sql.write_frame(test,name='NewTable',con=conn,if_exists='append')
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
IntegrityError: column ID is not unique
Run Code Online (Sandbox Code Playgroud)
错误可能是键'L1'已经在NewTable中.数据框中的任何条目都不会附加到NewTable.但是,我可以毫无问题地将具有新密钥的数据帧附加到NewTable.
是否有一种简单的方法(例如,没有循环)将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()
Run Code Online (Sandbox Code Playgroud)