通过Python.to_sql更新PostgreSQL中的行:更新?

2024-10-01 07:49:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道.to_sql()insert or update if key exists option尚未实现,所以我正在寻找替代方案


首先想到的是使用append选项:

data.to_sql(
    "Dim_Objects",
    con=connection,
    if_exists="append",
    index=False
)

并在插入数据后分别删除数据库中的重复项:

DELETE FROM "Dim_Objects" a
      USING "Dim_Objects" b
      WHERE a."Code" = b."Code" 
        AND a."TimeStampUpdate" < b."TimeStampUpdate"

在这种情况下,如果有副本,我只保留最新的条目


这种方法似乎有效,但我希望我能直接使用熊猫实现同样的效果

有什么想法吗


Tags: ortokeysqlifobjectsexists方案
1条回答
网友
1楼 · 发布于 2024-10-01 07:49:06
     can you try? 
  
    data.to_sql('Dim_Objects', con=connection, if_exists='replace')
    
    sql = """
        UPDATE "different_table" AS f
        SET col1 = b.col1
        FROM your_table_name AS data
        WHERE a."Code" = b."Code"
    """
    
    with engine.begin() as conn:     
        conn.execute(sql)

相关问题 更多 >