gpt4 book ai didi

Python SQLite3执行许多: query that simulates set(data) - set(initial_data)

转载 作者:行者123 更新时间:2023-12-01 06:59:04 25 4
gpt4 key购买 nike

假设我在 Sqlite3 DB 中有一些数据,这些数据是通过从 Python 的 sqlite3 模块执行 executemany() 插入的。

示例initial_data:

initial_data = [
('aa', 'test1', 'home1'),
('aa', 'test2', 'home2'),
('aa', 'test3', 'home3'),
('aa', 'test4', 'home4'),
('aa', 'test5', 'home5'),
]

示例executemany():

self.db.executemany("""
INSERT INTO some_table (
col1,
col2,
col3
)
VALUES (?, ?, ?)
""", data)

将上述initial_data插入表中后,我可能会得到一组新的data,如下所示:

data = [
('aa', 'test1', 'home1'),
('aa', 'test2', 'home2'),
('aa', 'test3', 'home3'),
('aa', 'test6', 'home6'), // this is new
('aa', 'test4', 'home4'),
('aa', 'test5', 'home5'),
]

您可能已经注意到,data 中有一个新行,这是唯一应该插入到我的表中的行。

现在,我知道我可以做类似 set(data) - set(initial_data) 的事情(if len(data) > len(initial_data))并插入到我的表中,但我想知道是否可以以某种方式改变我的查询,以便我可以直接从 SQL 执行此操作。有人对此有什么想法吗?

PS:不知道是否重要,但 len(data) 将始终为 30k-50k。

最佳答案

您可以尝试使用INSERT IGNORE查询。

self.db.executemany("""
INSERT IGNORE INTO some_table (
col1,
col2,
col3
)
VALUES (?, ?, ?)
""", data)

关于Python SQLite3执行许多: query that simulates set(data) - set(initial_data),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58711959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com