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 上插入数据而没有任何限制,因此无论何时执行插入都不会检查任何内容。
我有一个 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 上插入数据而没有任何限制,因此无论何时执行插入都不会检查任何内容。