Я решил добавить запрос, чтобы проверить, существуют ли данные, как показано ниже:
for eachRow in data:
cur.execute('''SELECT FileName, Delivery, SW, FuncName
FROM FileNameStatus
WHERE FileName = :file AND Delivery = :dvry AND SW = :sw AND FuncName = :func''',
{"file": eachRow[0], "dvry": eachRow[1], "sw": eachRow[2], "func": eachRow[3]})
row = cur.fetchone()
if row is None: # row not exist
cur.execute('''INSERT INTO FileNameStatus
(FileName, Delivery, SW, FuncName, LinkModDate, ExtSrcModDate, ExtSrcModifier,
ExtAttModDate, ExtAttModifier, Error, Warning)
VALUES (?, ?, ?, ?, ? ,? ,? ,? ,? ,? ,?)''',
eachRow)
else: # row exist, just update
cur.execute('''UPDATE FileNameStatus
SET FileName = :file, Delivery = :drvy, SW = :sw, FuncName = :func,
LinkModDate = :ld, ExtSrcModDate = :sd, ExtSrcModifier = :sm,
ExtAttModDate = :ad, ExtAttModifier = :am, Error = :err, Warning = :warn
WHERE FileName = :file AND Delivery = :drvy AND SW = :sw AND FuncName = :func;''',
{"file": eachRow[0], "drvy": eachRow[1], "sw": eachRow[2], "func": eachRow[3],
"ld": eachRow[4], "sd": eachRow[5], "sm": eachRow[6],
"ad": eachRow[7], "am": eachRow[8], "err": eachRow[9], "warn": eachRow[10]})
# apply the changes
conn.commit()