DSE är en enkel och rå sätt att inte utföra SQL-frågor i följd, men cachevärden tills ett givet maxvärde har uppfyllts och sedan köra dem med executemany-metoden. Resultatet kan bli enorma hastighet vinster.
DSE endast testats på SQLite3 men avsedd att användas i django också.
Exempel användning:
import sqlite3 # för teständamål
från DSE import DelayedSqlExecutor
conn = sqlite3.connect (': minne:')
markör = conn.cursor ()
cursor.execute ("skapa bord filedata (id INTEGER PRIMARY KEY, filepath TEXT, filnamn TEXT, filstorlek INTEGER) ')
d = DelayedSqlExecutor (markör, paramtoken = '?') # använda? paramtoken här för sqlite3. Lämna det tomt och it`ll använda% s som stöd av Django etc.
d.addObject ("filedata", ("id", "filepath", "filnamn", "filstorlek '))
for i in range (0, 999):
& Nbsp; & nbsp; & nbsp; # Sätta vissa dummy data. Lägg märke till frånvaron av id-fältet. Detta kommer att utlösa skär.
& Nbsp; & nbsp; & nbsp; #Adding Id-fältet skulle utlösa en uppdatering för uppgifter ännu inte finns i db
& Nbsp; & nbsp; & nbsp; d.addItem ('filedata', {"filepath ':' / tmp / ',' filnamn ':' test% s.txt '% i,' filstorlek ': i})
# Ingen SQL har utförts ännu, är standardgränsen 1000 objekt
# Lägga annat objekt utlöser utförandet av SQLs och återställa d-instans
d.addItem ('filedata', {"filepath ':' / tmp / ',' filnamn ':' test% s.txt '% i,' filstorlek ': i})
# Lägga några poster för att uppdatera
d.addItem ("filedata", {'id': 1, "filepath ':' / tmp / ',' filnamn ':' testmore% s.txt '% i,' filstorlek ': 100})
# Ringa nära kommer att utföra eventuella kvar SQLs
d.close ()
# Du kanske behöva ringa begå på markören för att begå data. Beror på hur du ställer in markören / anslutning
Vad är nytt i den här versionen:.
- Bakåtkompatibilitet med django 1.3 .x. Tack till John Spray för detta.
Vad är nytt i version 3.2.0:
- Patch från andornaut@gmail.com vara kompatibla med Django 1.4.0. Patch från Herve Cauwelier att ge stöd till modeller med icke-autokey primära fält.
Vad är nytt i version 3.1.0:
- Patch från rassminus; Ändrad sql skapande att citera alla hänvisningar till tabellnamn och kolumnetiketter.
Vad är nytt i version 3.0.0 Beta 2:
- Fast några saker som rapporterats av Fido Garcia .
Vad är nytt i version 3.0.0 Beta 1:
- Ändringar i syntax som är inte bakåtkompatibel därför en version bump. Det och den trevliga bulk_update metoden.
- Lägg till och köra metoder har tagits bort.
- Patched modellerna har nu en egenskap som kallas fördröjd istället för DSE. Du kan också lappa specifika modeller (nya i 2.1.0).
- Infoga objekt samtals model.delayed.insert (värden)
- För att uppdatera ett objekt samtal model.delayed.update (värden)
- För att ta bort ett objekt samtal model.delayed.delete (id)
- Om du måste uppdatera en enorm datamängd där värdena för fälten är begränsade kan du använda den nya model.delayed.bulk_update (värden), till exempel metadata från bilder eller musikfiler. Tack vare Cal Leeming [Enkelhet Sverige AB] för inspiration på denna:-). För mer info se längre ner för en mer komplett genomgång om vad happ bakom kulisserna.
Vad är nytt i version 2.1.0:
- Liten förändring; dse.patch_models kan nu ta en valfri lista med modeller för att lappa, som så dse.patch_models (specific_models = [User, kommentar]).
Vad är nytt i version 2.0.0:.
- Uppdaterad docs och exempel
Vad är nytt i version 2.0.0 RC1:
- Ingen förändring av koden, nu släppt hjälp av modifierad BSD-licensen att vara mer kompatibel med Django licens användning.
Vad är nytt i version 1.0.2 / 2.0.0 Beta 9:
- Lade FileExport-klass för att underlätta felsökning vad bearbetas under testningen. Skriver SQL-data till filen. Se källa / testsuite för användning.
Krav :
- Python
Kommentarer hittades inte