[go: up one dir, main page]

Skip to content

Latest commit

 

History

History

170408_Databaze

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

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

Python sqlite3 dokumentace