Python SQLite3 ExecuteMy:模拟集合(数据)集合(初始数据)的查询

2024-09-29 17:23:00 发布

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

假设我在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


Tags: 示例dataleninitialaatest1test2test3

热门问题