Sqlite 使用 Insert、Executemany 和元组列表避免重复
Sqlite Avoid Duplicates Using Insert, Executemany and list of Tuples
我有一个包含学生资格数据的现有 Sqlite table,代码会定期检查获得的新资格并将其插入 table。这会导致重复。
def insertQualificationData(data):
# Run execute many command to insert data
self.cursor.executemany(
"""
INSERT INTO qualification (
qualificationperson,
type,
secondaryreference,
reference,
name,
pass,
start,
qualificationband,
grade,
time_stamp
) VALUES (?,?,?,?,?,?,?,?,?,?)
""", data
)
'data' 变量是一个元组列表。例如:
('209000010111327', 'WLC', 'G0W915', 'Certificate', 'Child Care and Education', 'P', '12/07/2001', 'PASS', 'Pass', 1648018935)
我想防止 'duplicate' 值被插入到资格 table 中,通过 'duplicate' 我的意思是如果一行与 qualificationperson、reference、name & pass 不应插入的列。
我看到其他答案做类似的事情,但使用第二个 table 的命名列,我正在努力使用元组列表和 executemany()
来复制它
您可以在这些列上添加唯一索引:
CREATE UNIQUE INDEX IF NOT EXISTS QData ON qualification (qualificationperson, reference, name, pass)
然后使用 INSERT OR IGNORE
语句,这样一个值插入失败不会导致整个 executemany
失败:
INSERT OR IGNORE INTO qualification (...)
我有一个包含学生资格数据的现有 Sqlite table,代码会定期检查获得的新资格并将其插入 table。这会导致重复。
def insertQualificationData(data):
# Run execute many command to insert data
self.cursor.executemany(
"""
INSERT INTO qualification (
qualificationperson,
type,
secondaryreference,
reference,
name,
pass,
start,
qualificationband,
grade,
time_stamp
) VALUES (?,?,?,?,?,?,?,?,?,?)
""", data
)
'data' 变量是一个元组列表。例如:
('209000010111327', 'WLC', 'G0W915', 'Certificate', 'Child Care and Education', 'P', '12/07/2001', 'PASS', 'Pass', 1648018935)
我想防止 'duplicate' 值被插入到资格 table 中,通过 'duplicate' 我的意思是如果一行与 qualificationperson、reference、name & pass 不应插入的列。
我看到其他答案做类似的事情,但使用第二个 table 的命名列,我正在努力使用元组列表和 executemany()
来复制它您可以在这些列上添加唯一索引:
CREATE UNIQUE INDEX IF NOT EXISTS QData ON qualification (qualificationperson, reference, name, pass)
然后使用 INSERT OR IGNORE
语句,这样一个值插入失败不会导致整个 executemany
失败:
INSERT OR IGNORE INTO qualification (...)