Python-Pandas将最新的数据更新到数据库

18 篇文章 3 订阅
2 篇文章 0 订阅

在做数据分析时,时常会用到 dataframe.to_sql 语句,把一些计算或分析好的数据加入到数据库中,一般的添加是很好操作的,直接设置一个参数即可:

import pandas as pd
import sqlite3 as sq3

conn = sq3.connect(db_file_name, detect_types=sq3.PARSE_DECLTYPES)

dataframe.to_sql(
    table_name,
    con=conn,
    if_exists='append',
    index=False
)

如果存在,就添加到后面去,但是如果我们数据中都是有唯一key的怎么办?比如更新用户信息,假如一个用户已经存在数据表中了,我们要怎么处理?

一个笨方法就是把数据全部读取出来,然后更改之后再一次写进去,这么做如果数据量过大,就会很慢。

除了这个,那就只能依靠数据库本身的功能了,REPLACE。

就是先把要更新的用户和新用户加入到一个临时表格中,然后运用REPLACE语句去替换或添加到用户表里头去

做法如下:

USER_TABLE_NAME = 'UserInfo'
# dft 是一个 dataframe 数据集
dft.to_sql('temp', conn, if_exists='replace', index=False) # 把新数据写入 temp 临时表
connection = conn.cursor()
# 替换数据的语句
args1 = f""" REPLACE INTO "{USER_TABLE_NAME}"
             SELECT * FROM "temp"
         """
connection.execute(args1) 
args2 = """ DROP Table If Exists "temp" """ # 把临时表删除
connection.execute(args2)
connection.close()
conn.commit()

这样就可以把新数据更新到数据表中了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏小败在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值