Gå til innhold

Anbefalte innlegg

Trenger hjelp til en simpel database i python.

Har lagd meg et program der jeg har info om alle mine DVD-er o.l. men trenger en måte å lagre dette på.

Har dere gode idéer?

 

Har sett litt på MySQL, men det virket fryktelig tungvindt for dette programmet.

Lenke til kommentar
Videoannonse
Annonse

Kanskje SQLite er akkurat passe stort for dette? SQLite er en liten søt sak alle data lagres i én tekstfil, men du har full SQL-støtte og det er ganske fint til små databaser som dette.

 

Og det beste av alt er at SQLite følger med Python hvis du bruker versjon 2.5 eller nyere!

 

http://docs.python.org/lib/module-sqlite3.html

 

Jeg bruker selv SQLite til unittester i prosjektene mine, da bruker jeg ikke fil engang, men hele databasen holdes i minnet (":memory:"-database).

Lenke til kommentar

Hvordan forandrer jeg en rad som allerede eksisterer?

 

Slik er tabellen:

cursor.execute('CREATE TABLE movies (id INTEGER PRIMARY KEY, name TEXT, location TEXT)')

 

Hvis jeg nå har f.eks. 3 rader med info, hvordan forandrer jeg f.eks. name i rad 1?

Endret av Xecuter88
Lenke til kommentar

Hehe, ok, jeg trodde kanskje du kunne SQL nemlig :)

 

Jeg ser du har limt inn noe CREATE TABLE, du kjører ikke den hver gang håper jeg? Den skal du bare kjøre første gangen for å opprette tabellene, men det visste du kanskje?

 

Uansett, så bruker du sikkert INSERT for å dytte data inn, tilsvarende bruker du UPDATE for å oppdatere:

 

INSERT INTO movies VALUES (3, 'Foo', 'Bar')
UPDATE movies SET location = 'Zot' WHERE id = 3

Men hvis du ikke kan SQL så foreslår jeg at du finner deg en 5 minutters tutorial om det :)

 

Et annet alternativ KAN jo da være å droppe SQLite og heller bruke en Python dictionary som du skriver til fil med pickle (eller cPickle) modulen. Det kommer jo litt an på antatte datamengder.

Lenke til kommentar

Takker for den! :)

 

Joda har lest et par tutorials, men fant ingen om update.

Men det hele var ganske enkelt å forstå, så holder meg til SQLite. ;)

 

Og ja, har forstått at CREATE TABLE skal kun skrives en gang. :wee: Har det stående øverst i scriptet.

 

 

Kommer muligens flere spørsmål etter hvert. :wee:

 

Red.: Virker forøvrig som om du har kontroll på dette! Du burde vurdere å skrive en tutorial om dette, en som er litt mer utdypende en den som finnes på devshed. Hadde vært kult.

Fins ikke så veldig mange gode tutorialer om python og sqlite, annen enn den på devshed. Har hvert fall ikke funnet.

Endret av Xecuter88
Lenke til kommentar

Et spørsmål til. :wee:

 

Hvordan reindexerer jeg databasen min?

cursor.execute('CREATE TABLE movies (id INTEGER PRIMARY KEY, name TEXT, location TEXT)')

Nå har jeg flere rader med info i databasen, men hvis jeg sletter noe mitt i så blir det et hopp i id-en.

Hvordan gjør jeg slik at id "resettes" og begynner fra 1 og oppover?

Endret av Xecuter88
Lenke til kommentar

Hvorfor vil du det? Såvidt jeg vet er det ikke mulig helt uten videre, men problemet du vil løse kan kanskje løses på en annen måte. Så hva er grunnen til at du ikke vil ha hull i id'ene?

 

(Reindeksering, eller å bygge indekser på nytt, er noe annet)

Lenke til kommentar
Nei det har egentlig ingen funskjon annet enn at det er kjekt å ha i tilfelle flere likense oppføringer, så kan jeg slette etter id-en.

 

Et oenget med en ID er jo at den er unik og stabil. Dette er for databasens integritet. Trenger du et applikasjonsinternt nummereringssystem kan du vedlikeholde en egen kolonne for dette, som kan "re-indekseres" hver gang du sletter noe.

Lenke til kommentar
Takker for den! :)

 

Joda har lest et par tutorials, men fant ingen om update.

Men det hele var ganske enkelt å forstå, så holder meg til SQLite. ;)

 

Og ja, har forstått at CREATE TABLE skal kun skrives en gang. :wee: Har det stående øverst i scriptet.

 

En liten korreksjon. CREATE TABLE skal kun kjøres når du skal opprette en tabell i databasen. Ikke nødvendigvis hver gang scriptet kjøres. Tabellen er lagret i databasefila etter at scriptet er ferdig å kjøre. Dersom scriptet er ment kun for å opprette databasestrukturen, er det noe annet. Da kan du med fordel ha en DROP TABLE først, for så å kjøre en CREATE TABLE. Så får du en ny tom tabell og du vil ikke støte på problemer med at tabellen allerede eksisterer.

 

Når det gjelder python og sqlite3, så finnes det en oversikt over metodene i python dokumentasjonen(link).

 

Metoden du sannsynlig vil benytte mest er cursor.execute('expr'). Expr er sql kommandoer, derfor må du lære deg sql først. Dette er ikke python spesifikt. Søk på 'sql tutorial' på google, og du finner nok mange guider.

 

Ørjan...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...