使用peewee进行多处理的批量插入

Paw*_*ysz 5 python mysql bulkinsert multiprocessing peewee

我在Python 3.4中使用简单的html scraper,使用peewee作为ORM(很棒的ORM顺便说一句!).我的脚本需要一堆站点,提取必要的数据并将它们保存到数据库中,但是每个站点都在分离过程中被刮掉,以提高性能并保存数据应该是唯一的.不仅在站点之间,而且在特定站点上都可能存在重复数据,因此我只想将它们存储一次.

示例:帖子和类别 - 多对多关系.在抓取过程中,同一类别在不同的帖子中出现多次.我第一次想要将该类别保存到数据库(创建新行).如果相同的类别出现在不同的帖子中,我想将该帖子与db中已创建的行绑定.

我的问题是 - 我是否必须使用原子更新/插入(插入一个帖子,保存,get_or_create类别,保存,将新行插入多对多表,保存)或者我可以以某种方式使用批量插入?这个问题的最快解决方案是什么?也许某些临时表在进程之间共享,这将在工作结束时批量插入?我正在使用MySQL db.

谢谢答案和时间

col*_*fer 1

您可以依靠数据库通过添加unique=True字段或多列唯一索引来强制执行唯一约束。您还可以查看有关获取/创建和批量插入的文档:

  • 根据常见问题解答,您不应该只在答案上放置一堆链接。 (3认同)