Cách tiếp cận là đúng về cách sử dụng. Điều duy nhất tôi muốn thay đổi là một cái gì đó như dưới đây
mappings = []
i = 0
for b, foo_x in session.query(Bar, Foo.x).join(Foo, Foo.id==Bar.foo_id):
info = {'id':b.id, 'x': foo_x}
mappings.append(info)
i = i + 1
if i % 10000 == 0:
session.bulk_update_mappings(Bar, mappings)
session.flush()
session.commit()
mappings[:] = []
session.bulk_update_mappings(Bar, mappings)
Điều này sẽ đảm bảo rằng bạn không có quá nhiều dữ liệu bị treo trong bộ nhớ và bạn không thực hiện chèn quá lớn vào DB cùng một lúc