Bij het maken van python bestanden moet je onthoudeen dat er een __init__.py bestand moet zijn, onthoud ook dat die ten aller tijden leeg is.
Voorbeeld van Main.py
import os
import time
import atletiek_python.atleet_tabel
import atletiek_python.prestatie_tabel
import atletiek_python.onderdeel_tabel
import atletiek_python.categorie_tabel
import atletiek_python.csv_prestaties_wegschrijven
def main_menu():
while True:
os.system(‘cls’)
print(“\n— Hoofdmenu —“)
print(“1. Tabel ‘Atleet’ Uitlezen”)
print(“2. Voeg een Atleet toe”)
print(“3. Tabel ‘Prestaties’ Uitlezen”)
print(“4. Voeg een Prestatie toe bij een Atleet”)
print(“5. Tabel ‘Onderdeel’ Uitlezen”)
print(“6. Voeg een Onderdeel toe”)
print(“7. Tabel ‘Categorie’ Uitlezen”)
print(“8. Voeg een Categorie toe”)
print(“9. CSV van Prestaties Weerschrijven”)
print(“10. Afsluiten”)
keuze = input(“Voeg 1 van de bovenstaande getallen toe:\n”)
if keuze == “1”:
os.system(“cls”)
atletiek_python.atleet_tabel.lees_atleet_uit()
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “2”:
os.system(“cls”)
atleet_informatie = atletiek_python.atleet_tabel.atleet_informatie()
atletiek_python.atleet_tabel.voeg_atleet_toe(atleet_informatie)
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “3”:
os.system(“cls”)
atletiek_python.prestatie_tabel.lees_prestaties_uit()
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “4”:
os.system(“cls”)
atletiek_python.prestatie_tabel.voeg_prestatie_bij_atleet_toe()
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “5”:
os.system(“cls”)
atletiek_python.onderdeel_tabel.lees_onderdeel_uit()
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “6”:
os.system(“cls”)
onderdeel_info = atletiek_python.onderdeel_tabel.onderdeel_informatie()
atletiek_python.onderdeel_tabel.voeg_onderdeel_toe(onderdeel_info)
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “7”:
os.system(“cls”)
atletiek_python.categorie_tabel.lees_categorie_uit()
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “8”:
os.system(“cls”)
categorie_info = atletiek_python.categorie_tabel.categorie_informatie()
atletiek_python.categorie_tabel.voeg_categorie_toe(categorie_info)
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “9”:
os.system(“cls”)
atletiek_python.csv_prestaties_wegschrijven.schrijf_prestaties_naar_csv()
input(“\nDruk ‘enter’ om terug te gaan”)
elif keuze == “10”:
os.system(“cls”)
print(“U heeft het Programma afgesloten”)
break
else:
os.system(‘cls’)
print(“Foutmelding 000 \nDeze invoer word niet herkend, probeer het opnieuw”)
time.sleep()
main_menu()
Voorbeeld van Atleet_Tabel.py
import os
import pymysql
import time
from datetime import datetime
def lees_atleet_uit():
conn = pymysql.connect(
host=’localhost’,
user=’root’,
passwd=’cfvh2002′,
database=’atletiek’
)
cur = conn.cursor()
cur.execute(“SELECT atleet_ID, naam, geboortedatum, atletiek_vereniging FROM atleten_tabel”)
output = cur.fetchall()
for i in output:
print(i)
conn.close()
def atleet_informatie():
print(“We gaan nu een atleet toevoegen aan de database.”)
conn = pymysql.connect(
host=’localhost’,
user=’root’,
passwd=’cfvh2002′,
database=’atletiek’
)
cur = conn.cursor()
cur.execute(“SELECT MAX(atleet_id) FROM atleten_tabel”)
result = cur.fetchone()
nieuw_id = 1 if result[0] is None else int(result[0] + 1)
atleet_gegevens = [nieuw_id]
# Volledige naam invoer met controle op minimaal één spatie
while True:
naam = input(“Geef de volledige naam van de Atleet op: “).strip()
if not naam:
os.system(‘cls’)
print(“Foutmelding 000\nOngeldige invoer. De naam mag niet leeg zijn.”)
time.sleep(1.5)
elif ” ” not in naam:
os.system(‘cls’)
print(“Foutmelding 000\nOngeldige invoer. De naam moet een voor- en achternaam bevatten.”)
time.sleep(1.5)
else:
atleet_gegevens.append(naam)
break
# Geboortedatum invoer met validatie
while True:
geboortedatum = input(“Geef de geboortedatum op (YYYY-MM-DD): “).strip()
try:
datetime.strptime(geboortedatum, “%Y-%m-%d”)
atleet_gegevens.append(geboortedatum)
break
except ValueError:
os.system(‘cls’)
print(“Foutmelding 000 \nOngeldige invoer. Voer de geboortedatum opnieuw in als YYYY-MM-DD.”)
time.sleep(1.5)
# Atletiek vereniging invoer
while True:
vereniging = input(“Geef de Atletiek vereniging op: “).strip()
if vereniging:
atleet_gegevens.append(vereniging)
break
else:
os.system(‘cls’)
print(“Foutmelding 000 \nOngeldige invoer. De vereniging mag niet leeg zijn.”)
time.sleep(1.5)
print(f’De ingevoerde gegevens zijn: {atleet_gegevens}’)
cur.close()
conn.close()
return atleet_gegevens
def voeg_atleet_toe(atleet_informatie):
conn = pymysql.connect(
host=’localhost’,
user=’root’,
passwd=’cfvh2002′,
database=’atletiek’
)
cur = conn.cursor()
sql_exec = “INSERT INTO atleten_tabel (atleet_id, naam, geboortedatum, atletiek_vereniging) VALUES (%s, %s, %s, %s);”
cur.execute(sql_exec, atleet_informatie)
conn.commit()
print(“De atleet is succesvol toegevoegd aan de database.”)
cur.close()
conn.close()
Voorbeeld van CSV_Prestaties_Wegschrijven.py
import pymysql
import csv
import os
def schrijf_prestaties_naar_csv():
csv_bestand = ‘prestaties.csv’
# Verwijder het bestand als het al bestaat
if os.path.exists(csv_bestand):
os.remove(csv_bestand)
# Maak verbinding met de database
conn = pymysql.connect(
host=’localhost’,
user=’root’,
passwd=’cfvh2002′,
database=’atletiek’
)
cur = conn.cursor()
query = “””
SELECT
P.prestatie_id,
A.naam,
C.categorie_naam,
O.onderdeel_naam,
P.prestatie,
P.datum_prestatie
FROM
prestaties_tabel P
JOIN
atleten_tabel A ON P.atleet_id = A.atleet_id
JOIN
categorie_tabel C ON P.categorie_id = C.categorie_id
JOIN
onderdelen_tabel O ON P.onderdeel_id = O.onderdeel_id
“””
# Voer de query uit
cur.execute(query)
output = cur.fetchall()
# Schrijf data naar een CSV-bestand
with open(csv_bestand, mode=’w’, newline=”, encoding=’utf-8′) as file:
writer = csv.writer(file)
# Schrijf de header
writer.writerow([‘prestatie_id’, ‘naam’, ‘categorie’, ‘onderdeel’, ‘prestatie’, ‘datum_prestatie’])
# Schrijf de data
for record in output:
writer.writerow(record)
print(f”De prestaties zijn succesvol geschreven naar {csv_bestand}.”)
cur.close()
conn.close()