dse ist eine einfache und rohe Art, nicht die Ausführung von SQL-Abfragen in der Reihenfolge, aber das Caching-Werte, bis ein bestimmter Maximalwert wurde erfüllt und führen Sie sie mit der executemany-Methode. Das Ergebnis kann enorme Geschwindigkeitsgewinne sein.
dse erst am SQLite3 getestet, aber für den Einsatz in django sowie gedacht.
Beispiel Nutzung:
Import sqlite3 # zu Testzwecken
von dse Import DelayedSqlExecutor
conn = sqlite3.connect (': memory:')
Cursor = conn.cursor ()
cursor.execute ("create table FILEDATA (id INTEGER PRIMARY KEY, Dateipfad TEXT, TEXT Dateiname, Dateigröße INTEGER) ')
d = DelayedSqlExecutor (Cursor, paramtoken = '?') # mit dem? paramtoken hier für sqlite3. Lassen Sie es leer und es `ll verwenden% s Unterstützung von Django usw.
d.addObject ('FILEDATA', ('id', 'Dateipfad "," Dateiname "," Dateigröße "))
for i in range (0, 999):
& Nbsp; & nbsp; & nbsp; # Hinzufügen einige Dummy-Daten. Beachten Sie das Fehlen der ID-Feld. Dies wird Einsätze auslösen.
& Nbsp; & nbsp; & nbsp; #Adding Das id-Feld wäre ein Update für Daten noch nicht im db auslösen
& Nbsp; & nbsp; & nbsp; d.addItem ('FILEDATA ", {" Dateipfad': '/ tmp /', 'Dateiname': 'test% s.txt'% i, 'Dateigröße': i})
# Keine SQL wurde noch ausgeführt wird, der Standardwert beträgt 1000 Stück
# Hinzufügen einer weiteren Gegenstand wird die Ausführung SQLs auslösen und setzen Sie die d-Instanz
d.addItem ('FILEDATA ", {" Dateipfad': '/ tmp /', 'Dateiname': 'test% s.txt'% i, 'Dateigröße': i})
# Hinzufügen einige Datensätze zu aktualisieren
d.addItem ('FILEDATA ", {' id ': 1," Dateipfad': '/ tmp /', 'Dateiname': 'testmore% s.txt'% i, 'Dateigröße': 100})
# Aufruf der Nähe werden alle verbleibenden SQLs ausführen
d.close ()
# Sie können verpflichtet, commit auf dem Cursor, um die Daten zu verpflichten. Hängt davon ab, wie Sie den Cursor / Anschluss-Set
Was ist neu in dieser Pressemitteilung:.
- Die Rückwärtskompatibilität mit Django 1.3 .x. Dank John Spray für diese ein.
Was ist neu in Version 3.2.0:
- Patch von andornaut@gmail.com um kompatibel sein mit Django 1.4.0. Patch von Herve Cauwelier um Unterstützung für Modelle mit nicht-Autokey Primärfelder zu schaffen.
Was ist neu in Version 3.1.0:
- Patch von rassminus; Geänderte SQL-Erstellung, alle Verweise auf den Tabellennamen und Spaltenbeschriftungen zitieren.
Was ist neu in der Version 3.0.0 Beta 2:
- Fest ein paar Dinge von Fido Garcia berichtete .
Was ist neu in der Version 3.0.0 Beta 1:
- Änderungen in der Syntax, die nicht abwärtskompatibel ist, also eine Version stoßen. Das und die schöne bulk_update Verfahren.
- Das Add und führen Methoden wurden entfernt.
- Patched-Modelle haben nun eine Eigenschaft namens statt dse verzögert. Sie können auch patchen spezifische Modelle (neu in 2.1.0).
- Wenn Sie ein Element Anruf model.delayed.insert einfügen (Werte)
- Wenn Sie ein Element Anruf model.delayed.update aktualisieren (Werte)
- Wenn Sie ein Element Anruf model.delayed.delete (id) löschen
- Wenn Sie eine große Datenmenge in dem die Werte für die Felder begrenzt sind können Sie die neue model.delayed.bulk_update (Werte), zum Beispiel Metadaten von Fotos und Musikdateien verwenden, zu aktualisieren. Dank Cal Leeming [Einfachheit Media Ltd] zur Inspiration auf diesen einen:-). Für weitere Informationen schauen Sie dann weiter nach unten für eine Komplettlösung auf das, was hinter den Kulissen happends.
Was ist neu in Version 2.1.0:
- Kleine Änderung; dse.patch_models kann nun eine optionale Liste von Modellen, um zu patchen, wie so dse.patch_models (specific_models = [User, Kommentar]).
Was ist neu in der Version 2.0.0:.
- Aktualisiert Dokumentation und Beispiele
Was ist neu in der Version 2.0.0 RC1:
- Keine Änderung im Code, jetzt mit der frei modifizierten BSD-Lizenz, mehr mit Django Lizenznutzung vereinbar sind.
Was ist neu in der Version 1.0.2 / 2.0.0 Beta 9:
- hinzugekommen Fileexport-Klasse zu besseren Debuggen, was während des Tests verarbeitet. Schreibt SQL-Daten-Datei. Siehe Quelle / Testsuite für den Einsatz.
Anforderungen :
- Python
Kommentare nicht gefunden