我有一个有很多列的表,主键是AUTOINCREMENT,从1开始。我正在逐行分析来自文件的csv数据,可能有重复的行。在
在这种情况下,我需要检查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, ))
insert或ignore的忽略部分基于冲突。正如SQLite documentation for on conflicts中所讨论的,您的表中需要有一个唯一的或主键。在
您的表中是否有一列或一组列是唯一的或可以用作主键的列,例如sku_uid?这将导致冲突,因此每当遇到该约束时,insert都将被忽略。现在您只是在表上没有约束地插入数据,所以每次执行插入操作时都不会检查任何内容。在
相关问题 更多 >
编程相关推荐