DB Pyworking – info k obsahu
- Co je to databáze, relační databáze, proč se používá a jak ji použít z Pythonu
- Základy SQL - jazyka pro manipulaci s daty v relační databázi: CREATE TABLE, INSERT, SELECT, UPDATE, DELETE
- Pokročilé dotazování: agregace, JOIN
- Databázové principy: indexy, ACID, transakce
- Vše si prakticky ukážeme i na příkladech v Pythonu
- Abychom vše reálně použili, vytvoříme si jednoduchou webovou aplikaci ve Flasku pracující s databází SQLite
slides Jupyter notebook s příklady ze slajdů
https://github.com/messa/db-workshop-web-app branch dokonceno obsahuje autorské řešení :) pro zájemce je v branchi sqlalchemy řešení pomocí tzv. ORM, to je Python knihovna, která, stručně řečeno, za vás řeší ty otazníčky a umí vyjádřit SQL dotazy pomocí Python konstrukcí. Je to ale samo o sobě rozsáhlé téma.
Todo web app anketa:
- Rozmyslet si strukturu tabulek
- Vyplnit tělo funkce prepare_schema; tip: CREATE TABLE IF NOT EXISTS [název] … - nevyhodí chybu, pokud tabulka už existuje
- Vyplnit tělo funkce insert_suggestion - vložení návrhu
- Upravit list_suggestions, aby to vracelo data vložená přes insert_suggestion
- Vyzkoušet si vložit nový návrh (suggestion) :)
- Doplnit tělo funkce insert_vote a upravit list_suggestions, aby u jednotlivých návrhů byl i počet hlasů
- Bonus: zabránit dvojitému hlasování pomocí cookie, do které si uložíte nějakou náhodnou hodnotu, která pak bude identifikovat daného hlasujícího uživatele - http://flask.pocoo.org/docs/0.12/quickstart/#cookies
- Tip: nezapomenout na commit ;)
Priklad - Kniznica
Clenove
- id_clena
- Meno
- Priezvisko
- Rodne_cislo
Knihy
- id_knihy
- Nazov_knihy
- Pocet_kusov_celkom
Pujcky
- Id_clena
- Id_knihy
- Pozicane_od
- Pozicane_do
Priklady:
- Vytvorit tabulky
- Zadat 5 clenov, 5knih, 5vypujcek
- Vyselectovat knihy knihy co su pozicane, kym a do kedy (tj. Meno, kniha, do kedy)
- Vypisat knihy co su teraz v knihovne (nie pujcene) - toto je poněkud advanced :) probereme spolu
- Vypsat Top3 nejčastěji půjčované knihy, zoradene podla #vypozicani