sql >> Databasteknik >  >> RDS >> Mysql

Använda bulk_update_mappings i SQLAlchemy för att uppdatera flera rader med olika värden

Tillvägagångssättet är korrekt när det gäller användning. Det enda jag skulle ändra är något som nedan

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)

Detta kommer att se till att du inte har för mycket data hängande i minnet och att du inte gör en för stor infogning i DB på en enda gång




  1. Ställ in MySQL 8 från Binary Tarball

  2. Hur man uppgraderar MySQL 5.5 till 5.6 på Ubuntu 14.04

  3. MySQL månadsförsäljning för de senaste 12 månaderna inklusive månader utan rea

  4. PayPal ODBC-drivrutin