python - 在 Django(SQL、Python、Django)中使用 get_or_create() 批量插入的有效方法

标签 python django bulkinsert

有没有更有效的方法来做到这一点?

for item in item_list:
    e, new = Entry.objects.get_or_create(
        field1 = item.field1,
        field2 = item.field2,
    )

最佳答案

您无法使用 get_or_create(甚至创建)进行体面的批量插入,并且没有 API 可以轻松做到这一点。

如果您的表足够简单,使用原始 SQL 创建行不会太痛苦,那也不会太难;类似:

INSERT INTO site_entry (field1, field2)
(
         SELECT i.field1, i.field2
         FROM (VALUES %s) AS i(field1, field2)
         LEFT JOIN site_entry as existing
                 ON (existing.field1 = i.field1 AND existing.field2 = i.field2)
         WHERE existing.id IS NULL
)

其中 %s 是一个字符串,如 ("field1, field2"), ("field3, field4"), ("field5, field6") 您必须正确创建和转义自己。

关于python - 在 Django(SQL、Python、Django)中使用 get_or_create() 批量插入的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252530/

相关文章:

Python:仅发送前缀时 IRC 机器人崩溃

python - django PermissionRequiredMixin permission_required 不工作

html - 如何动态地将内容排列到 GridView 中?

postgresql - 在 postgres 中可以从表动态构建 INSERT 脚本吗?

python - 欧拉大数(128位)的totient函数是否有快速算法?

python - 如何在 sleep 时忽略Python中的键盘输入

python - 检测 Pandas 数据框中特定列的行中的异常值

django - 初始化外键下拉菜单

plsql - Forall 语句中立即执行的编译问题

Sql批量复制无法访问目标表