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

在做数据分析时,时常会用到 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()

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

你可能感兴趣的:(Pandas,Python,Database,数据库,python)