相关疑难解决方法(0)

插入MySQL表或更新(如果存在)

我想在数据库表中添加一行,但如果存在具有相同唯一键的行,我想更新该行.

例如,

insert into table (id, name, age) values(1, "A", 19)
Run Code Online (Sandbox Code Playgroud)

假设唯一的密钥是id,在我的数据库中有一行id = 1.在这种情况下,我想用这些值更新该行.通常这会产生错误.如果我使用insert IGNORE它将忽略错误,但它仍然不会更新.

mysql sql upsert insert-update

821
推荐指数
12
解决办法
78万
查看次数

从pandas df更新数据库中的现有行

我有一个PostgreSQL数据库.Pandas有一个'to_sql'函数,用于将数据帧的记录写入数据库.但是我没有找到任何关于如何在完成数据帧时使用pandas更新现有数据库行的文档.

目前,我可以使用pandas read_sql_table将数据库表读入数据帧.然后我根据需要处理数据.但是,我无法弄清楚如何将该数据帧写回数据库以更新原始行.

我不想要覆盖整个表格.我只需要更新最初选择的行.

python postgresql pandas

23
推荐指数
1
解决办法
6397
查看次数

通过主键将Pandas数据帧附加到sqlite表

我想将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'不在.我尝试将数据框附加到NewT​​able.

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中.数据框中的任何条目都不会附加到NewT​​able.但是,我可以毫无问题地将具有新密钥的数据帧附加到NewT​​able.

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

谢谢.

python sqlite pandas

12
推荐指数
1
解决办法
6731
查看次数

标签 统计

pandas ×2

python ×2

insert-update ×1

mysql ×1

postgresql ×1

sql ×1

sqlite ×1

upsert ×1