簡體   English   中英

在Django中加速批量ORM操作的策略

[英]Strategies for speeding up batch ORM operations in Django

我的一個API調用可能導致對大量對象(Django模型)的更新。 由於我正在單獨更新每個項目,保存並繼續下一個項目,因此我遇到了性能問題:

for item in Something.objects.filter(x='y'):
    item.a="something"
    item.save()

有時我的過濾條件看起來像“x in('a','b','c',...)”。

似乎官方的答案是“不會修復” 我想知道人們在這些場景中使用什么策略來提高性能。

您鏈接的票證用於批量創建 - 如果您不依賴於重寫的save方法或前/后保存信號來執行保存工作, QuerySet有一個update方法 ,您可以使用它來執行UPDATE過濾行:

Something.objects.filter(x__in=['a', 'b', 'c']).update(a='something')

您需要手動使用事務或創建sql語句。 您還可以嘗試使用SQLAlchemy,它支持一些很棒的ORM功能,如工作單元(或應用程序事務)。

Django交易: http//docs.djangoproject.com/en/dev/topics/db/transactions/? from = olddocs

SQLAlchemy: http ://www.sqlalchemy.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM