Kombinieren Sie Inserts in eine Transaktion Python SQLite3

8

Ich versuche, 1000er Zeilen in SQLite3 mit insert einzugeben, aber die Zeit, die zum Einfügen benötigt wird, ist viel zu lang. Ich habe gehört, Geschwindigkeit ist stark erhöht, wenn die Einsätze zu einer Transaktion kombiniert werden. Allerdings kann ich SQlite3 anscheinend nicht überspringen, um zu überprüfen, dass die Datei auf der Festplatte geschrieben ist.

Dies ist ein Beispiel:

%Vor%

Das habe ich am Anfang.

%Vor%

Es scheint jedoch keinen Unterschied zu machen. Ein Weg, um die Geschwindigkeit der Wendeplatte zu erhöhen, wäre sehr willkommen.

    
Eric 20.02.2011, 04:52
quelle

4 Antworten

3

Laut Sqlite-Dokumentation sollte BEGIN transaction mit COMMIT

beendet werden
  

Transaktionen können manuell mit dem Befehl BEGIN gestartet werden. Eine solche   Transaktionen bleiben normalerweise bis zum nächsten COMMIT oder ROLLBACK bestehen   Befehl. Aber eine Transaktion wird auch ROLLBACK, wenn die Datenbank ist   geschlossen oder wenn ein Fehler auftritt und die ROLLBACK Konfliktlösung   Algorithmus ist angegeben. Siehe die Dokumentation zum ON CONFLICT   Klausel für zusätzliche Informationen zum ROLLBACK-Konflikt   Auflösungsalgorithmus.

Der Code sollte also so aussehen:

%Vor%     
SIFE 05.01.2012 15:15
quelle
2

Ссылка beantwortet die Frage. execute ('begin') hat keine Auswirkung. Anscheinend ist eine connection.commit () ausreichend.

    
Bouncner 17.04.2013 02:25
quelle
1

(Falls jemand noch eine Antwort darauf sucht)

Sie sollten Executemany verwenden, wenn Sie nur einige tausend Inserts nacheinander ausführen.

Sehen Sie sich Was ist der optimierte Weg, um eine große Anzahl von Datensätzen (mehr als 40.000) in sqlite3 einzufügen

?

Ich habe gerade mit einem LOT (Auftrag Millionen) von Executes gekämpft, die ungefähr 30 Minuten zur Vollendung benötigten - geschalten zu executemany und ich habe es jetzt unten zu ungefähr 10 Minuten.

    
sgrg 16.09.2015 16:10
quelle
0

Sie können Executemany verwenden, sehen Sie sich diese SO-Frage an: python sqlite question - Methode einfügen

    
dugres 20.02.2011 11:31
quelle