sqlite python INSERT IF NOT EXIST with many variables

sqlite python INSERT IF NOT EXIST with many variables

我有一个 table 有很多列,主键是 AUTOINCREMENT 并且从 1 开始。我正在逐行解析文件中的 csv 数据,并且可能有重复的行。

在这种情况下,我需要检查 table Main 中是否已经存在具有以下所有变量的相同值的行(当然具有增量主键),如果不存在,则使用这些变量创建新行.

插入或忽略在这种情况下不起作用,我不明白为什么。

提前致谢

cur.execute('''INSERT OR IGNORE INTO Main (sku_id, skucat_id, prodline_id, lor_id,
                    skucat_id, georegion_id, geosector_id, month, year,
                    sellin_un, sellin_rur, sellout_un, sellout_rur)
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', (sku_id,
                    skucat_id, prodline_id, lor_id, skucat_id, georegion_id,
                    geosector_id, month, year, sellin_un, sellin_rur,
                    sellout_un, sellout_rur, ))

插入或忽略的忽略部分基于冲突。如 SQLite documentation for on conflicts 中所述,您需要在 table 中有一个唯一键或主键。

您的 table 中是否有一列或一组列是唯一的或可以用作主键,例如 sku_id?这将导致冲突,因此只要命中该约束,插入就会被忽略。现在您只是在 table 上插入数据而没有任何限制,因此无论何时执行插入都不会检查任何内容。