DSE er en enkel og rå måde ikke udfører SQL-forespørgsler i rækkefølge, men caching værdier, indtil en given max værdi er blevet opfyldt, og derefter udføre dem ved hjælp af executemany-metoden. Resultatet kan være enorme hastighed gevinster.
DSE blev først testet på sqlite3 men beregnet til brug i Django så godt.
Eksempel på brug:
import sqlite3 # til testformål
fra DSE import DelayedSqlExecutor
Conn = sqlite3.connect (': hukommelse:')
cursor = conn.cursor ()
cursor.execute (oprette tabel filedata (id INTEGER PRIMARY KEY, filepath TEKST, filnavn TEKST, filstørrelse heltal) ')
d = DelayedSqlExecutor (cursor, paramtoken = '?') # ved hjælp af? paramtoken her sqlite3. Lad det være tomt og it`ll bruge% s som støtte fra Django etc.
d.addObject (»filedata« ('id', 'filepath', 'filnavn', 'Filstørrelse'))
for jeg i intervallet (0, 999):
& Nbsp; & nbsp; & nbsp; # Tilføje nogle dummy data. Bemærk fraværet af ID-felt. Dette vil udløse skær.
& Nbsp; & nbsp; & nbsp; #Adding ID-feltet ville udløse en opdatering til data endnu ikke i db
& Nbsp; & nbsp; & nbsp; d.addItem (»filedata", {'filepath «:» / tmp /', 'filnavn': "test% s.txt '% i," Filstørrelse': i})
# Ingen SQL er udført endnu, standard grænse er 1000 varer
# Tilføjelse andet emne vil udløse udførelsen af SQLs og nulstille d-instans
d.addItem (»filedata", {'filepath «:» / tmp /', 'filnavn': "test% s.txt '% i," Filstørrelse': i})
# Tilføjelse nogle poster til at opdatere
d.addItem (»filedata", {»id«: 1, "filepath«: »/ tmp / ',' filnavn ':' testmore% s.txt '% i," Filstørrelse': 100})
# Ringer tæt vil udføre de resterende SQLs
d.close ()
# Du kan være nødvendigt at ringe begå på markøren for at begå dataene. Afhænger af hvordan du oprette cursoren / tilslutning
Hvad er nyt i denne udgivelse:.
- bagudkompatibilitet med django 1.3 .x. Tak til John Spray for denne.
Hvad er nyt i version 3.2.0:
- Patch fra andornaut@gmail.com at være forenelig med Django 1.4.0. Patch fra Herve Cauwelier at yde støtte til modeller med ikke-autokey primære felter.
Hvad er nyt i version 3.1.0:
- Patch fra rassminus; Ændret sql skabelse at citere alle henvisninger til tabelnavnet og kolonneetiketter.
Hvad er nyt i version 3.0.0 Beta 2:
- Fast et par ting rapporteret af Fido Garcia .
Hvad er nyt i version 3.0.0 Beta 1:
- Ændringer i syntaks, som ikke er bagudkompatibel derfor en version bump. Det og den dejlige bulk_update metoden.
- Add og udføre metoder er blevet fjernet.
- Patched modeller har nu en ejendom kaldet forsinket i stedet for DSE. Du kan også lappe specifikke modeller (ny i 2.1.0).
- Sådan indsættes et objekt opkald model.delayed.insert (værdier)
- Hvis du vil opdatere et element opkald model.delayed.update (værdier)
- Hvis du vil slette et element opkald model.delayed.delete (id)
- Hvis du nødt til at opdatere et stort datasæt, hvor værdierne for felterne er begrænsede, kan du bruge den nye model.delayed.bulk_update (værdier), for eksempel metadata fra billeder eller musikfiler. Takket være Cal Leeming [Simplicity Media Ltd] for inspiration på denne ene:-). For mere info se længere nede for en mere komplet gennemgang af, hvad happends bag kulisserne.
Hvad er nyt i version 2.1.0:
- småpenge; dse.patch_models kan nu tage en valgfri liste med modeller til at lappe, som så dse.patch_models (specific_models = [User, kommentar]).
Hvad er nyt i version 2.0.0:.
- Opdateret docs og eksempler
Hvad er nyt i version 2.0.0 RC1:
- Ingen ændring i koden, nu frigivet ved hjælp af modificeret BSD-licens til at være mere kompatibel med Django licens brug.
Hvad er nyt i version 1.0.2 / 2.0.0 Beta 9:
- Tilføjet FileExport-klasse at lette debugging hvad forarbejdes under testen. Skriver SQL-data til fil. Se kilde / testsuite til brug.
Krav :
- Python
Kommentarer ikke fundet