python - django get_or_create - 对象列表的性能优化

标签 python sql database django

考虑以下(伪Python)代码:

l = [some, list]
for i in l:
    o, c = Model.objects.get_or_create(par1=i["something"], defaults={'par2': i["else"],})

假设大多数时候对象会被检索,而不是创建,

通过第一个 SELECT() 查询不在 par1 定义的集合中的对象,然后批量插入丢失的对象,可以明显提高性能。

但是,是否有一种简洁的 Python/Django 模式可以在不深入 SQL 的情况下实现这一目标?

这是一个批量导入例程,因此 l 包含字典,而不是 django 模型实例。

最佳答案

给定 ID 列表,您可以使用 Django 使用 __in 运算符快速为您提供相应的 Model 实例:https://docs.djangoproject.com/en/dev/ref/models/querysets/#in

photos_exist = Photo.objects.filter(
            id__in=photo_ids
            )

关于python - django get_or_create - 对象列表的性能优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502658/

相关文章:

database - sql server 数据库的实际数据库大小

python - 使用 python 创建 Mysql 数据库 - 不断收到 1064 错误(...在 '%s' 附近使用正确的语法)

python - 用于多输入图像的 VGG16 网络

php - SQL从数组中选择IN子句?

sql - 如果 condition1 为真,则将一个表与一个表连接,如果条件 1 为假,则与另一个表连接?

database - 保持我的数据库和文件系统同步

python - 如何在 prometheus 中使用过滤器编写 API 查询

python - Pandas 拆分句子和标签短语来执行 BIO 标记

mysql - 在其他语句中使用 SQL 查询的结果

database - 更改日志/审计数据库表的最佳设计?