假设我在Sqlite3数据库中有一些数据,它是通过从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)
(如果len(data) > len(initial_data)
)的事情,并将其插入到我的表中,但我想知道是否可以以某种方式更改查询,以便直接从SQL执行此操作。有人对此有什么想法吗
PS:不知道它是否重要,但是len(data)
将始终是30k-50k
您可以尝试使用插入忽略查询
相关问题 更多 >
编程相关推荐