DSE er en enkel og rå måte å ikke utføre SQL-spørringer i sekvens, men caching verdier inntil en gitt max verdi er oppfylt, og deretter utføre dem ved hjelp av executemany-metoden. Resultatet kan bli store hastighetsgevinster.
DSE ble bare testet på SQLite3 men beregnet for bruk i django også.
bruk Eksempel:
import sqlite3 # for testformål
fra DSE import DelayedSqlExecutor
conn = sqlite3.connect (': minne:')
markør = conn.cursor ()
cursor.execute ('opprette tabellen filedata (id INTEGER PRIMARY KEY, filepath TEKST, filnavn TEKST, filstørrelse heltall)')
d = DelayedSqlExecutor (markør, paramtoken = '?') # bruker? paramtoken her for sqlite3. La det stå tomt og it`ll bruke% s som støtte av Django etc.
d.addObject ('filedata', ('id', 'filepath', 'filnavn', 'filstørrelse'))
for i in range (0, 999):
& Nbsp; & nbsp; & nbsp; # Legge noen dummy data. Legg merke til fraværet av id-feltet. Dette vil utløse inserts.
& Nbsp; & nbsp; & nbsp; #Adding Id-feltet ville utløse en oppdatering for data ennå ikke i db
& Nbsp; & nbsp; & nbsp; d.addItem ('filedata', {'filepath': '/ tmp /', 'filnavn': 'test% s.txt'% jeg, 'filstørrelse': i})
# Ingen SQL har blitt utført ennå, er grensen standard 1000 elementer
# Legge annet element vil utløse gjennomføringen av SQLs og nullstille d-forekomst
d.addItem ('filedata', {'filepath': '/ tmp /', 'filnavn': 'test% s.txt'% jeg, 'filstørrelse': i})
# Legge noen poster for å oppdatere
d.addItem ('filedata', {'id': 1, 'filepath': '/ tmp /', 'filnavn': 'testmore% s.txt'% jeg, 'filstørrelse': 100})
# Ringer nær vil utføre eventuelle gjenværende SQLs
d.close ()
# Du kan bli bedt om å ringe forplikte på markøren for å begå dataene. Avhenger av hvordan du setter opp markøren / tilkobling
Hva er nytt i denne utgaven:.
- Bakoverkompatibilitet med django 1.3 .x. Takk til John Spray for denne.
Hva er nytt i versjon 3.2.0:
- Patch fra andornaut@gmail.com å være kompatibel med Django 1.4.0. Patch fra Herve Cauwelier å gi støtte for modeller med ikke-autokey primære felt.
Hva er nytt i versjon 3.1.0:
- Patch fra rassminus; Endret sql skapelse å sitere alle referanser til den tabellnavn og kolonneetiketter.
Hva er nytt i versjon 3.0.0 Beta 2:
- Fikset et par ting som er rapportert av Fido Garcia .
Hva er nytt i versjon 3.0.0 Beta 1:
- Endringer i syntaks som ikke er bakoverkompatibel derfor en versjon bump. Det og fin bulk_update metoden.
- add og utføre metoder har blitt fjernet.
- Lappet modeller har nå en egenskap kalt forsinket i stedet for DSE. Du kan også lappe spesifikke modeller (nye i 2.1.0).
- Hvis du vil sette inn et element samtale model.delayed.insert (verdier)
- Hvis du vil oppdatere et element samtale model.delayed.update (verdier)
- Hvis du vil slette et element samtale model.delayed.delete (id)
- Hvis du har til å oppdatere et stort datasett der verdiene for feltene er begrenset du kan bruke den nye model.delayed.bulk_update (verdier), for eksempel metadata fra bilder eller musikkfiler. Takk til Cal Leeming [Simplicity Media Ltd] for inspirasjon på denne:-). For mer info se lenger ned for en mer komplett gjennomgang av hva happends bak kulissene.
Hva er nytt i versjon 2.1.0:
- Liten endring; dse.patch_models kan nå ta en valgfri liste over modeller å lappe, som så dse.patch_models (specific_models = [Bruker, Kommentar]).
Hva er nytt i versjon 2.0.0:.
- Oppdatert docs og eksempler
Hva er nytt i versjon 2.0.0 RC1:
- Ingen endring i kode, nå sluppet å bruke modifisert BSD lisens til å være mer kompatibel med Django lisens bruk.
Hva er nytt i versjon 1.0.2 / 2.0.0 Beta 9:
- Lagd FileExport-klasse å lette debugging hva er behandlet under testing. Skriver SQL-data til fil. Se kilde / testsuite for bruk.
Krav :
- Python
Kommentarer ikke funnet