Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de bulk_update_mappings dans SQLAlchemy pour mettre à jour plusieurs lignes avec des valeurs différentes

L'approche est correcte en termes d'utilisation. La seule chose que je changerais est quelque chose comme ci-dessous

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)

Cela garantira que vous n'avez pas trop de données en mémoire et que vous ne faites pas une trop grande insertion dans la base de données en une seule fois