Eindproject: een uitleenprogramma dat gegevens bewaart · oefening
Druk de uitleenactiviteit af
Een rapport over uitleenactiviteit bevat één rij per uitlening, ongeacht of die actief of afgerond is. Het is geen tijdlijn met twee gebeurtenissen. Het rapport moet ook het e-mailadres van het lid tonen dat versie 2 heeft toegevoegd, en ontbrekende waarden getrouw weergeven.
De demo roept main(["activity", str(database_path)]) twee keer aan: één keer terwijl uitlening 501 actief is en één keer na de teruggave. Voeg display_value(value) precies zoals getoond toe en daarna activity_command(args). Argparse geeft alleen args.database door aan die opdrachtfunctie.
Weiger een ontbrekende database, roep prepare_database aan en open de applicatieverbinding. Roep list_lending_activity(connection) precies één keer aan en sla de teruggegeven rijen op. Sluit de verbinding in finally voordat je afdrukt. De query geeft gewone dictionaries terug op volgorde van uitleen-ID, met precies loan_id, asset_tag, member_code, member_email, checked_out_on en returned_on.
def display_value(value):
if value is None:
return "NULL"
return str(value)
Gebruik display_value(value) bij het weergeven van waarden die kunnen ontbreken. Die geeft de letterlijke tekst NULL terug voor Python None; elke andere waarde wordt haar gewone stringweergave. Dat is van belang voor returned_on van een actieve uitlening en voor een ouder, gemigreerd lid waarvan het e-mailadres SQL NULL is. Druk niet de Python-waarde None, een leeg veld of een verzonnen gebeurtenisrij af.
Druk deze kopregel ook af als er geen uitleningen bestaan:
loan_id | asset_tag | member_code | member_email | checked_out_on | returned_on
Gebruik daarna een lus met for en de zes dictionarysleutels in precies die volgorde. Voeg geen SQL toe, voer de query niet twee keer uit, laat afgeronde uitleningen niet weg en sorteer in de CLI niet op inventariscode. Voeg de exacte tak if args.command == "activity": return activity_command(args) toe aan main.
Druk op Run om dezelfde blijvend opgeslagen rij vóór en na teruggave te vergelijken:
== activity before return ==
Status: 0
loan_id | asset_tag | member_code | member_email | checked_out_on | returned_on
501 | TL-100 | MB-017 | riley@example.test | 2026-08-26 | NULL
== activity after return ==
Status: 0
loan_id | asset_tag | member_code | member_email | checked_out_on | returned_on
501 | TL-100 | MB-017 | riley@example.test | 2026-08-26 | 2026-08-27
stderr: <empty>
Een grondige controle geeft meerdere uitleningen in een andere invoegvolgorde mee, actieve en afgeronde rijen, Unicode-waarden en zowel ontbrekende als aanwezige e-mailadressen. Die controleert één rij per uitlening, de exacte volgorde en kolommen, geen toestandswijziging, één publieke queryaanroep en het sluiten van de verbinding.
Opdracht
Voeg de exacte functie display_value(value) uit de instructies toe, voeg activity_command(args) toe of maak die af en zet deze tak in main:
if args.command == "activity":
return activity_command(args)
Weiger een ontbrekende database, bereid die voor, open die, roep list_lending_activity precies één keer aan en sluit in finally. Druk de exacte kopregel met zes kolommen af en één rij met pipes als scheidingstekens per teruggegeven dictionary in de bestaande volgorde. Geef elke Python-waarde None weer als NULL, inclusief een ontbrekend e-mailadres of ontbrekende terugbrengtekst.