Cách giải quyết khác của tôi là cắt putback
với một chức năng đơn giản như được đề xuất tại đây
:
def chunk(l, n):
n = max(1, n)
return [l[i:i + n] for i in range(0, len(l), n)]
và sau đó
for chunk in chunk(putback, 250000):
curs.execute("UPDATE table1
SET col3 = p.result
FROM unnest(%s) p(sid INT, result JSONB)
WHERE sid = p.sid", (chunk,))
Điều này hoạt động, tức là giữ cho bộ nhớ được kiểm soát, nhưng không hiệu quả và chậm hơn so với việc kết xuất tất cả dữ liệu cùng một lúc, như tôi thường làm.