我的 postgres 資料庫中有大約 1200 萬條記錄需要更新(所以我需要以一種有效的方式進行更新)。我正在使用 Django。
我必須更新 jsonfield 列 ( extra_info) 以使用同一模型中不同列(related_type_id整數)中的值。
試圖用update. 這似乎是最有效的方法。例子:
Person.objects.all().update(extra_info={
"type": "Human",
"id": F('related_type_id')
})
這會出錯:“F 型別的物件不是 JSON 可序列化的”。我認為 F() 將回傳該列的值(應該是一個整數),它應該是可序列化的。這可以做到嗎?還是我試圖以錯誤的方式做到這一點。我真的不想在 for 回圈中迭代并用 a 更新每條記錄,save()因為它會花費太長時間。記錄太多了
uj5u.com熱心網友回復:
Django 資料庫函式JSONObject應該可以作業,它從鍵值對回傳一個有效的 JSON 物件,并且可以傳遞F物件
from django.db.models import F, Value
from django.db.models.functions import JSONObject
Person.objects.all().update(extra_info=JSONObject(
type=Value('Human'),
id=F('related_type_id')
))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478865.html
標籤:Python django PostgreSQL django-迁移
