[英]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.