有没有更有效的方法来做到这一点?
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/