如何在 9.414 版本中使用 executemany 忽略 postgres 中的重复项?

Posted

技术标签:

【中文标题】如何在 9.414 版本中使用 executemany 忽略 postgres 中的重复项?【英文标题】:how to ignore duplicates in postgres with executemany in version 9.414? 【发布时间】:2018-11-05 08:19:14 【问题描述】:

我正在使用 postgres 9.414。我知道插入命令中的“冲突”命令,但它仅在 9.5 及更高版本上受支持。下面的任何解决方法,例如我可以使用python中的executemany一次插入许多元素?

我的 executemany 块:

db_cursor.executemany('''insert into "tablename" ("col1","col2")''', data)

data:要插入的元组[('val11','val12'),('val21', 'val22'), ('val31', 'val32')]中所有值的列表。

非常感谢, 苏迪普

【问题讨论】:

【参考方案1】:

您可以通过将元组列表转换为集合来首先从元组列表中删除重复项。 然后你可以运行命令executemany:

list(set([('val11','val12'),('val21', 'val22'), ('val31', 'val32')]))

现在,您在元组列表中拥有了唯一的所有内容。

【讨论】:

这样的问题是,虽然在新的数据集中有唯一性,但它并不能保护数据是否已经在表中。 好的,所以你想检查数据是否已经存在。对吗? 不,我想在插入过程中避免重复记录。

以上是关于如何在 9.414 版本中使用 executemany 忽略 postgres 中的重复项?的主要内容,如果未能解决你的问题,请参考以下文章

如果您在文件夹中使用语义版本控制,如何获得前 5 个语义版本

如何在 Mule 项目中使用同一连接器的多个版本

我如何在一页中使用多个jquery版本[重复]

在 package.json 中使用 * 而不是版本号时如何始终获取最新版本? [复制]

如何在最新版本中使用 getdownloadurl?

如何在最新版本中使用 getdownloadurl?