Xecuter Skrevet 2. april 2008 Del Skrevet 2. april 2008 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
steingrim Skrevet 2. april 2008 Del Skrevet 2. april 2008 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
Xecuter Skrevet 2. april 2008 Forfatter Del Skrevet 2. april 2008 (endret) Takker for den! Skal sjekke ut. Edit: SQLite ser ut til å være perfekt til oppgaven! Takk! Endret 2. april 2008 av Xecuter88 Lenke til kommentar
Xecuter Skrevet 3. april 2008 Forfatter Del Skrevet 3. april 2008 (endret) 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 3. april 2008 av Xecuter88 Lenke til kommentar
steingrim Skrevet 3. april 2008 Del Skrevet 3. april 2008 Helt vanlig SQL: UPDATE Lenke til kommentar
Xecuter Skrevet 3. april 2008 Forfatter Del Skrevet 3. april 2008 Hehe ok, må bare nevne at jeg er ganske så n00b så en "Helt vanlig SQL: UPDATE" er nok ikke så vanlig for meg. Kan du sette det i python-kode? Gjerne med litt dypere forklaring. Lenke til kommentar
steingrim Skrevet 3. april 2008 Del Skrevet 3. april 2008 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
Xecuter Skrevet 3. april 2008 Forfatter Del Skrevet 3. april 2008 (endret) 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. Har det stående øverst i scriptet. Kommer muligens flere spørsmål etter hvert. 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 3. april 2008 av Xecuter88 Lenke til kommentar
Xecuter Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 (endret) Et spørsmål til. 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 4. april 2008 av Xecuter88 Lenke til kommentar
steingrim Skrevet 4. april 2008 Del Skrevet 4. april 2008 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
Xecuter Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 Nei har vel egentlig ingen annen grunn enn at det er småirriterende med hull i id-en. Men hvis ikke SQLite har en slik funksjon selv, så får jeg python til å gjøre det. Lenke til kommentar
steingrim Skrevet 4. april 2008 Del Skrevet 4. april 2008 Hva skal du bruke tallet til? Er det for å vite hvor mange DVD-er du har så er det jo bare å gjøre SELECT COUNT(*) i stedet. Lenke til kommentar
Xecuter Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 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. Lenke til kommentar
zeitgeist Skrevet 4. april 2008 Del Skrevet 4. april 2008 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
Xecuter Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 Lurt! Det kan jeg prøve på! Lenke til kommentar
Orjanp Skrevet 6. april 2008 Del Skrevet 6. april 2008 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. 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
Xecuter Skrevet 6. april 2008 Forfatter Del Skrevet 6. april 2008 Å jada jeg er nok langt foran deg. Har forøvrig CREATE TABLE IF NOT EXISTS øverst i scriptet, og det burde ikke skape noen problemer. Lenke til kommentar
Xecuter Skrevet 7. april 2008 Forfatter Del Skrevet 7. april 2008 Kan jeg forandre navnet på en kolonne? Vil bytte ut 'name' med 'title', siden det er enkelere å huske på, og å jobbe med. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå