Lesson 1

Introduktion

2

Vad kommer kursen att erbjuda?

Med denna kurs kommer du få livslång glädje och svar på alla stora frågor i livet (så länge dessa frågor handlar om grundläggande koncept inom databaser och SQL). Vi kommer skapa en back-end till en hemsida samt lära oss att interagera med en databas genom programmeringsspråket SQL. Mästerverket vi ska arbeta med ser ut så här:

En revolutionerande skapelse!

Efter detta kapitel kommer ni kunna köra den själv, med begränsad funktionalitet som vi successivt bygger upp till. Det är inte världens finaste hemsida, men det är insidan som räknas (alltså databasen)!

Vad kommer kursen inte att erbjuda?

Denna kurs handlar inte om hur man utvecklar en hemsida eller hur man får den tillgänglig på nätet. Detta är för att begränsa kursen till endast SQL utan att behöva introducera mer komplexitet. Dessutom kommer allt ske offline/lokalt, vilket är bra för att sociala nätverk är allmänt bättre och mer konsekventa utan andra människor.

Vad är SQL?

SQL är likt ett programmeringsspråk, men till skillnad från programmeringsspråk som Python och Java, används SQL bara för att interagera med en databas i ett databashanteringssystemet. Du kan alltså inte skapa applikationer med SQL. Beroende på vilket databashanteringssystemet man använder så finns det olika former av SQL som inte alltid är kompatibla med varandra och som ibland kan använda sig av olika syntax eller funktioner. Just denna kurs kommer använda sig av databashanteringssystemet Postgres, samt dess implementation av SQL som har det intuitiva namnet PostgreSQL (dock kommer vi använda oss av SQL istället för PostgreSQL framöver). Databashanteringssystem är ett fint ord.

Vad behöver vi?

Postgres förstås. Hur man laddar ned det kommer nedan. Sedan, eftersom SQL är ett programmeringsspråk som bara interagerar med databaser, så behöver vi något annat språk för våran applikation. Vi kommer använda oss av Python 3.6 eller senare. Det rekommenderas att använda sig av någon IDE (exempelvis Pycharm som är gratis). Det är också bra att ha grundläggande förkunskaper i Python och inte mer än en minimal fobi för terminalen.

Applikationen vi kommer arbeta med är det revolutionerande sociala nätverket Tweeter och kan hämtas på Github. Det är ett socialt nätverk där man kan posta tweets och följa användare. Hämta projektet och spara det på något bra ställe i din dator.

Ladda ned Postgres

Gå till denna länk och välj den senaste versionen samt ert operativsystem. Klicka sedan på Download. Notera att installationsprocessen eller layouten kan ha förändrats ifrån när detta var skrivet. Om installationsprocessen har ändrats kan ni hitta den nya processen här. Exempelvis har layouten för Postgres installationssida ändrats gentemot bilden nedan.

Postgres installationssida

Installera PostgreSQL

Öppna den nedladdade filen. Ni kommer mötas av en installationsprogram som går igenom 10 steg:

  1. Start - Bara att klicka next.

  2. Installation directory - Var ni vill spara programmet på datorn. Den förvalda mappen rekommenderas.

  3. Select components - Vilka delar av programmet ni vill ha. Ni kan läsa om vilka ni vill ha, men vi kommer bara använda oss av PostgreSQL Server och Command Line Tools. De resterande komponenterna kan dock vara bra att ha om ni vill utveckla vidare utöver kursens innehåll, eller om ni vill använda ett grafisk gränssnitt istället för terminalen.

  4. Data directory - Var all data för era databaser ska sparas. Den förvalda mappen rekommenderas.

  5. Password - Lösenordet till databasens superuser (den användaren som har full makt och tillgång till allt i databasen). Detta lösenord är viktigt för det kommer krävas senare när programmet är installerat. Använd något du kommer ihåg!

  6. Port - Portnumret för servern. Använd det förvalda värdet. Erat värde kan eventuellt skilja sig från bilderna nedan.

  7. Advanced options - Vilken locale (språk-och region inställningar) ni vill använda er av. Använd det förvalda värdet.

  8. Pre installation summary - Sammanfattning av dina val. Titta att inget ser konstigt ut och klicka sedan next.

  9. Ready to install - Klicka next för att påbörja installationen.

  10. Complete installation - När installationen är klar kan det komma en förfrågan att köra Stack Builder. Det är inte nödvändigt så bocka av rutan och klicka finish.

Skapa en databas

  1. Leta upp mappen PostgreSQL. På Mac bör den vara under Applications, och på Windows i Program Files (eller Program Files (x86) om du laddade ned en 32-bitars version). Detta förutsatt att ni inte ändrade installationsmapp.

  2. I mappen finns pgAdmin4 (om inte ni bocka av det alternativet under installationen), som är en GUI för att använda Postgres, som ni kan testa om ni vill. Dock kommer vi använda oss av SQL Shell (psql) under kursen. Om ni använder Windows så bör ni köra runpsql.bat i mappen scripts.

  3. Efter du har startat psql kommer du få några prompts. Klicka bara enter tills du blir tillfrågad ett lösenord. Då skriver du in samma lösenord som vid installationen.

  4. När du är inloggad kör du ditt första SQL-kommando: CREATE DATABASE tweeter; (notera semikolon).

Nu har du skapat en databas i postgres! Det är även härifrån vi kommer köra våra SQL-kommandon (till att börja med). Notera dock att vi har rollen (role och user är nästan samma sak här, men role är att föredra) postgres, vilket är en fördefinierad roll kallad superuser. Att ha rollen superuser betyder att man har full makt över hela databashanteringssystemet och alla databaser däri, vilket bryter emot säkerhetsprincipen Rule of least privilege. Vad vi vill göra är att skapa en ny roll som bara har makt över databasen tweeter. Det gör vi genom följande kommando:

Lösenordet 1234 användes för att det är mycket bättre än 0000, password eller admin, men om du lyckas komma på ett bättre lösenord får du självklart använda det. Du kan även ändra användarnamnet från tweeter_admin till något som faller dig bättre i smaken.

Därefter vill vi ge denna roll full makt över databasen tweeter.

Här gav vi rollen alla privilegier till databasen, men ofta brukar man skapa roller till anställda eller klienter där de bara kan exempelvis hämta data (och inte ta bort eller lägga till). Mer privilegier förklaras här.

Hädanefter kan vi logga in som vår nya användare! Det är bara att skriva in Database: tweeter och Username: tweeter_admin nästa gång du öppnar psql. Alternativt kan du logg in genom följande kommando:

Nu när databasen är uppe kan ni testa Tweeter. Kör Tweeter/setup.py ifrån er Python IDE. Det skriptet kommer att ladda ned de bibliotek vi kommer använda oss av, samt skapa några datafiler. Därefter, kör Tweeter/app/tweeter.py. När applikationen är igång finns hemsidan tillgänglig på addressen http://127.0.0.1:5000/. Detta är en så kallad loopback address; den är bara tillgänglig ifrån din egna dator. Localhost är synonymt med 127.0.0.1, så du kan även gå in på http://localhost:5000/. Det resterande (:5000) betyder att vi kopplar upp oss via porten 5000.

Eftersom databasen är tom för närvarande så finns det inga tweets, användare eller annan data. Det är vad vi ska fixa i kursen!

Nedan kommer en komplementerande video för att visa hur man skapar en databas och användare, samt hur man får igång applikationen.


Comments

profile/avatar/default
Linda
Kör Tweeter/setup.py ifrån er Python IDE

Exakt hur gör man detta? Jag får det 

inte att fungera

Ted Klein Bergman

Det beror lite på. Ifall du har Pycharm kan du högerklicka på filen och få upp en meny. Då klickar du på Run "setup.py". Ifall du använder terminalen så måste du navigera till mappen och skriva inpython3 Tweeter/setup.py. Så det beror lite på vad du använder för att köra python. Eller får du något felmeddelande?

profile/avatar/default
Linda

Jag körde "Run 'setup.py' " i Pycharm och fick felmeddelandet "No module named passlib". Men sen löste jag problemet genom att i terminalen manuellt pip install flask, psycopg2, wtforms och passlib och sen gick det att köra setup.py

Ted Klein Bergman

Ska titta upp det, för setup.py ska ladda ned dem automatiskt. Men bra att du löste det!

profile/avatar/default
Linda

Tack för hjälpen!

Ted Klein Bergman

Tack själv för feedbacken! ^^