Gegevens opslaan
Hier bouw je op verder
- Python Door een dictionary loopen
Tot nu toe verdwijnt alle data als je programma stopt. Met sqlitedict kun je data permanent opslaan.
Installatie
python -m 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!")
- Regel 3:
withopent de database uit het bestandmijn_data.dben sluit hem vanzelf weer na het ingesprongen blok. Bestaat het bestand nog niet, dan maakt SqliteDict het aan. - Regel 4-5:
Binnen het blok gedraagt
dbzich als een dictionary: een sleutel, een waarde. - Regel 6:
db.commit()schrijft de wijzigingen echt naar het bestand. Zonder deze regel staan ze alleen in het geheugen en zijn ze weg als het programma stopt.
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.
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}")