Ga naar hoofdinhoud

Gegevens opslaan

Tot nu toe verdwijnt alle data als je programma stopt. Met sqlitedict kun je data permanent opslaan.

Installatie

pip install sqlitedict

Data opslaan

Maak test_db.py:

from sqlitedict import SqliteDict

with SqliteDict("mijn_data.db") as db:
db["naam"] = "Jan"
db["leeftijd"] = 16
db.commit()

print("Data opgeslagen!")

Run: python test_db.py — Er wordt een bestand mijn_data.db aangemaakt.

Data uitlezen

from sqlitedict import SqliteDict

with SqliteDict("mijn_data.db") as db:
print(db["naam"]) # Jan
print(db["leeftijd"]) # 16

De data is er nog, zelfs na herstarten!

Overzicht commando's

with SqliteDict("data.db") as db:
db["key"] = "waarde" # Opslaan
waarde = db["key"] # Uitlezen
del db["key"] # Verwijderen
db.commit() # Wijzigingen opslaan (NIET vergeten!)

for k, v in db.items(): # Alles bekijken
print(k, v)

if "key" in db: # Checken of iets bestaat
print("Bestaat!")
Waarom is db.commit() nodig?

Een database slaat wijzigingen niet meteen op in het bestand. Met db.commit() zeg je: "Sla nu alles echt op." Als je dit vergeet, staan je wijzigingen alleen in het geheugen en verdwijnen ze als het programma stopt. Vergelijk het met een Word-document: je moet op "Opslaan" klikken, anders ben je je werk kwijt.

Gaat er iets mis?

Data verdwenen na herstarten? Dan ben je waarschijnlijk db.commit() vergeten. Bekijk de troubleshooting pagina voor meer oplossingen.

Opdrachten

Opdracht 1: Predict - Wat gebeurt er?

with SqliteDict("test.db") as db:
db["score"] = 100
db.commit()

with SqliteDict("test.db") as db:
print(db["score"])

Vraag: Wat print dit?

Tip

De data wordt opgeslagen met commit(). Daarna wordt het bestand opnieuw geopend. Blijft de data bewaard in het bestand?

Antwoord

100 — De data blijft bewaard in het bestand dankzij db.commit().

Opdracht 2: Run - Eerste database

Maak een programma dat een contact opslaat (naam + telefoonnummer) en het weer uitleest. Werkt het?

Tip

Sla twee waarden op met verschillende keys, bijvoorbeeld db["naam"] = "Jan" en db["telefoon"] = "0612345678". Vergeet db.commit() niet!

Antwoord
from sqlitedict import SqliteDict

with SqliteDict("contacten.db") as db:
db["naam"] = "Jan"
db["telefoon"] = "0612345678"
db.commit()

with SqliteDict("contacten.db") as db:
print(f"Naam: {db['naam']}")
print(f"Telefoon: {db['telefoon']}")

Opdracht 3: Investigate - Commit vergeten

Wat gebeurt er als je db.commit() vergeet? Probeer het uit!

Antwoord

De data wordt niet opgeslagen. Na herstarten is het weg. Zonder commit() staan de wijzigingen alleen in het geheugen.

Opdracht 4: Make - Favorieten opslaan

Maak een programma dat drie favorieten opslaat (eten, muziek, game) en ze daarna weer uitleest.

Tip

Gebruik drie keys: db["eten"], db["muziek"], db["game"]. Sla alles op met één db.commit() aan het eind.

Antwoord
from sqlitedict import SqliteDict

with SqliteDict("favorieten.db") as db:
db["eten"] = "pizza"
db["muziek"] = "pop"
db["game"] = "Minecraft"
db.commit()

with SqliteDict("favorieten.db") as db:
for key, value in db.items():
print(f"{key}: {value}")

Oefen met Python

Python oefenblok

Dit oefenblok draait pure Python in je browser — geen FastAPI. Oefen hier de Python-concepten die je nodig hebt voor je server.

# Oefen met dictionaries (vergelijkbaar met een database)
data = {}

# Toevoegen (CREATE)
data["naam"] = "Jan"
data["leeftijd"] = 16
data["hobby"] = "programmeren"
print("Toegevoegd:", data)

# Lezen (READ)
print(f"Naam: {data['naam']}")

# Bijwerken (UPDATE)
data["leeftijd"] = 17
print(f"Nieuwe leeftijd: {data['leeftijd']}")

# Alle items bekijken
for sleutel, waarde in data.items():
  print(f"  {sleutel}: {waarde}")