Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie bulk_update_mappings w SQLAlchemy do aktualizowania wielu wierszy z różnymi wartościami

Podejście jest poprawne pod względem użytkowania. Jedyne, co bym zmienił, to coś takiego jak poniżej

Mapowania
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)

Zapewni to, że w pamięci nie ma zbyt wiele danych i nie wykonasz zbyt dużego wstawiania do bazy danych za jednym razem




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie TIMESTAMP MySQL vs bezpośrednie przechowywanie znaczników czasu

  2. Przechowywanie danych w MySQL w formacie JSON

  3. Błąd #2002 Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/Applications/MAMP/tmp/mysql/mysql.sock' (2)

  4. MYSQL:różnica między binarnym a Blob

  5. Kolejność wykonywania warunków w MySQL