TDDD80 Projekt: Mobila och sociala applikationer
Laboration S2: Databas
Syfte
I denna laboration ska du utöka din tidigare applikation med extern lagring i en databas, samt skriva enhetstester för din kod. Som vanligt, så gäller att så länge er lösning uppfyller spec:en nedanför, har ni fria händer att bestämma hur ni vill lösa uppgiften.
Genomförande
Första steget i laborationen är att utforska (Googla) och skriftligt förklara viktiga grundbegrepp. Det är viktigt att ni för varje svar lägger med de URL:er (länkar) som ni har bedömt vara trovärdiga och som ni har använt för att sammanställa ert svar. (Svaren lämnas in i README-fil i Gitlab, tillsammans med labb-koden):
- Vad erbjuder biblioteket SQLAlchemy för fördelar när man arbetar med databaser?
- Vad innebär modulär kod-struktur när det gäller Flask-kod? Hur kan cirkulära importer ställa till det? Har ni hittat någon bra lösning?
- Vad finns det för problem (och sätt att lösa det) med att uppdatera _strukturen_ på en databas som redan innehåller data? Vad kommer ni att ha för strategi i denna fråga för er app-utveckling?
Laborationen genomförs i par. Ni ansvarar själva för att installera nödvändig programvara för att utveckla med Python+Flask+SQLAlchemy, samt enhetstestning med code coverage.
Ladda nödvändiga programmoduler
Ladda de programmoduler som används i kursen genom att skriva följande (om ni har gjort initadd tidigare, kan ni hoppa över detta steg):
module initadd courses/TDDD80
Aktivera virtuell python miljö
Starta en terminal och ställ dig i er labbmapp. Skriv sedan följande:
source my_env/bin/activate
Installera bibliotek för databashantering
pip3 install Flask-SQLAlchemy
Starta upp PyCharm
För att starta PyCharm i Linux-PUL kan du skriva följande i en terminal:
pycharm.sh
Krav
Den interna lagring som användes i föregående laboration ska ersättas med en databas. SQLAlchemy ska anvädas för att kommunicera med databasen. I denna laboration ska SQLite användas som databas.
Utöver kraven från laboration 1 ska du uppfylla följande:
- Meddelanden och användare lagras i en SQLite-databas
- SQLAlchemy används för att kommunicera med databasen
- Det finns minst två SQLAlchemy-Models (Meddelande och Användare)
- Det finns en Many-to-Many-relation mellan två modeller
- Du ska skriva enhetstester till din kod
- Dina enhetstester ska ha code coverage på minst 60%
- Kod ska versionshanteras med git via gitlab.liu.se
För att skapa nya användare kan det vara hjälpsamt att lägga till ett nytt HTTP-anrop. Du får själv bestämma hur det ska specifieras.
Redovisa
- Muntligt redovisa/demonstrera er laboration för er assistent (körning + tester med coverage)
- Ladda upp söknings-svaren inkl. länkar (i README-fil), samt er kod (alla relevanta filer för labben) (gärna kontinuerligt) till ert gitlab-projekt
- Lägg till er assistent som Reporter på ert projekt
- Meddela er assistent att ni lagt upp koden genom att skicka ett mejl. Märk mejlet med TDDD80: Labb S2, och se till att det finns en länk till repot i mejlet.
Resurser
Sidansvarig: Rita Kovordanyi
Senast uppdaterad: 2023-01-10