Programmering nivå 2
Kap 5.2 – Projektarbete med databas
Bygg grunden till ett eget projekt som lagrar och söker information i SQLite.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Kunna strukturera ett eget program som använder databas för att lagra och hantera information.
- Använda tidigare kunskaper om SQLite, moduler och programstruktur i ett eget projekt.
- Förstå hur man planerar, utvecklar och testar en applikation från grunden.
Så här lär du dig bäst
Ditt projektarbete bygger på vad du lärt dig i tidigare moduler. Du lär dig bäst genom att börja enkelt och sedan bygga vidare steg för steg. Börja med att få grunden att fungera: skapa databasen och de viktigaste funktionerna. Dela upp koden i moduler och använd funktioner för återanvändbarhet. Dokumentera din kod noggrant. Se till att din kod hanterar fel och att du testar varje del noggrant.
Centrala begrepp
- Moduler - Att dela upp koden i flera filer för bättre struktur.
- SQL och SQLite - Språket och databasen du använder för att lagra information.
- CRUD - Create, Read, Update, Delete: de fyra grundfunktionerna i databashantering.
- Programstruktur - Hur du organiserar menyer, funktioner och databasanrop.
- Felhantering - Att skydda programmet från att krascha när något går fel.
Projektkrav
Du ska nu påbörja ett eget databasprojekt. Projektet ska minst ha:
- Ett menybaserat gränssnitt i konsolen.
- En SQLite-databas med minst en tabell.
- Funktioner för att lägga till och visa data.
- En sökfunktion med SQL.
- Kod uppdelad i minst två moduler, till exempel
main.pyochdatabas.py. - Användning av
try/exceptför att hantera fel.
Exempel på programidéer
- Bokregister
- Receptplanerare
- Elevhanteringssystem
- Film- eller serieregister
Förslag på struktur
En vanlig uppdelning är att låta main.py hantera menyn och låta
databas.py hantera all kontakt med databasen.
main.py - användargränssnittet
import databas
def visa_meny():
print("1. Lägg till post")
print("2. Visa alla")
print("3. Sök")
print("4. Avsluta")
def main():
databas.skapa_tabell()
while True:
visa_meny()
val = input("Val: ")
if val == "1":
databas.lagg_till()
elif val == "2":
databas.visa_alla()
elif val == "3":
databas.sok()
elif val == "4":
break
else:
print("Ogiltigt val.")
if __name__ == "__main__":
main()
databas.py - hanterar databasen
import sqlite3
DB_FIL = "poster.db"
def skapa_tabell():
try:
conn = sqlite3.connect(DB_FIL)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS poster (
id INTEGER PRIMARY KEY AUTOINCREMENT,
namn TEXT NOT NULL,
info TEXT
)
""")
conn.commit()
conn.close()
except Exception as e:
print("Fel vid tabellskapande:", e)
def lagg_till():
namn = input("Ange namn: ")
info = input("Ange info: ")
try:
conn = sqlite3.connect(DB_FIL)
cursor = conn.cursor()
cursor.execute(
"INSERT INTO poster (namn, info) VALUES (?, ?)",
(namn, info)
)
conn.commit()
conn.close()
print("Post tillagd.")
except Exception as e:
print("Kunde inte lägga till post:", e)
def visa_alla():
try:
conn = sqlite3.connect(DB_FIL)
cursor = conn.cursor()
cursor.execute("SELECT * FROM poster")
resultat = cursor.fetchall()
conn.close()
if resultat:
for rad in resultat:
print(f"{rad[0]}. {rad[1]} - {rad[2]}")
else:
print("Inga poster hittades.")
except Exception as e:
print("Fel vid hämtning:", e)
def sok():
sokord = input("Sök efter: ")
try:
conn = sqlite3.connect(DB_FIL)
cursor = conn.cursor()
cursor.execute(
"SELECT * FROM poster WHERE namn LIKE ? OR info LIKE ?",
("%" + sokord + "%", "%" + sokord + "%")
)
resultat = cursor.fetchall()
conn.close()
if resultat:
for rad in resultat:
print(f"{rad[0]}. {rad[1]} - {rad[2]}")
else:
print("Inga träffar.")
except Exception as e:
print("Fel vid sökning:", e)
Öva - Starta ditt projekt
- Välj ett av projekten ovan eller hitta på ett eget.
- Skapa en databas och tabell.
- Gör menyer och funktioner.
- Testa delarna och dokumentera din kod.
Att tänka på när du bygger vidare
- Börja med Create och Read innan du bygger mer avancerade funktioner.
- Låt databasfunktionerna ligga i en egen modul så huvudfilen blir lätt att läsa.
- Testa varje funktion separat innan du kopplar ihop allt i menyn.
- Skriv tydliga felmeddelanden så användaren förstår vad som gick fel.
Sammanfattning
- Du har nu påbörjat ett eget programmeringsprojekt med databas.
- Du använder funktioner, moduler och SQLite i ett praktiskt sammanhang.
- Du har förberett grunden till din slutuppgift eller ett större program.