SQLITE:批量插入或替换(upsert)

时间:2017-04-23 17:21:17

标签: python sqlite upsert

我有一个应用程序,它将带有唯一键的记录插入(或替换)到SQLite数据库表中。 预计每秒会有大约1500条记录,但由于性能问题,它的速度要慢于此。

目前我正在这样做(在Python中):

for item in items:
    CONN.execute("INSERT OR REPLACE INTO ITEMS (ITEM_ID) VALUES ("+item['itemId']+")")

我想要的是批量插入或替换以提高性能。

我知道有一种方法可以进行批量插入: Is it possible to insert multiple rows at a time in an SQLite database?

但有没有办法进行批量插入或替换? 我知道插入或替换与upsert不同 - 没关系。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

INSERT OR REPLACE INTO items (id, link, added) VALUES (19122727, "https://instant.page/", COALESCE((SELECT added FROM items WHERE id = 19122727), 1549742777)),(19123506, "http://hades.mech.northwestern.edu/index.php/Modern_Robotics", COALESCE((SELECT added FROM items WHERE id = 19123506), 1549742777)),(19123352, "https://dendibakh.github.io/blog/2019/02/09/Top-Down-performance-analysis-methodology", COALESCE((SELECT added FROM items WHERE id = 19123352), 1549742777))