Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden von bulk_update_mappings in SQLAlchemy zum Aktualisieren mehrerer Zeilen mit unterschiedlichen Werten

Der Ansatz ist in Bezug auf die Verwendung richtig. Das einzige, was ich ändern würde, ist so etwas wie unten

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)

Dadurch wird sichergestellt, dass nicht zu viele Daten im Speicher hängen und Sie nicht zu viele Daten auf einmal in die DB einfügen