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

标签 python mysql multiprocessing bulkinsert peewee

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

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

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

谢谢你的回答和你的时间

最佳答案

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

关于python - 使用 peewee 进行多处理批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747096/

相关文章:

python - Pyspark 中的并发

Python 多线程转入 Celery 任务。 celery_task.update_state() 错误

Python 多处理池 : dynamically set number of processes during execution of tasks

python - 使用批量提交系统时调试潜在的整数溢出?

php - 使用 Javascript ajax 在 PHP 中实现多线程,可能吗?

python - 在 python 中监视显示状态?

python - SPARQL 查询返回的行数比预期多

php - 匹配来自 url 的 where 条件中的人名

php - 使用 php 进行多选选项 onChange

php - 创建灵活的更新查询