Úvod do databází

Streamlined Data Ingestion with pandas

Amany Mahfouz

Instructor

Relační databáze

  • Data o entitách jsou organizována do tabulek
  • Každý řádek (záznam) je instancí entity
  • Každý sloupec obsahuje informace o atributu
  • Tabulky lze propojit pomocí jedinečných klíčů
  • Podporují více dat, více současných uživatelů a kontrolu kvality dat
  • Pro každý sloupec jsou určeny datové typy
  • SQL (Structured Query Language) slouží k práci s databázemi
Streamlined Data Ingestion with pandas

Běžné relační databáze

Logo Microsoft SQL Server

Logo Oracle

  • Databáze SQLite jsou počítačové soubory

Logo PostgreSQL

Logo SQLite

Streamlined Data Ingestion with pandas

Připojení k databázím

  • Dvoustupňový proces:
    1. Vytvoření připojení k databázi
    2. Dotazování databáze

Ilustrace databáze

Streamlined Data Ingestion with pandas

Vytvoření databázového enginu

Logo SQLAlchemy

  • create_engine() z sqlalchemy vytváří engine pro správu připojení k databázi
    • Vyžaduje řetězec s URL databáze
    • Formát URL pro SQLite: sqlite:///filename.db
Streamlined Data Ingestion with pandas

Dotazování databází

  • pd.read_sql(query, engine) pro načtení dat z databáze
  • Argumenty
    • query: řetězec s SQL dotazem nebo názvem tabulky
    • engine: objekt připojení k databázi
Streamlined Data Ingestion with pandas

Přehled SQL: SELECT

  • Slouží k dotazování dat z databáze
  • Základní syntaxe:
    SELECT [column_names] FROM [table_name];
    
  • Načtení všech dat z tabulky:
    SELECT * FROM [table_name];
    
  • Styl kódu: klíčová slova VELKÝMI PÍSMENY, středník (;) ukončuje příkaz
Streamlined Data Ingestion with pandas

Získávání dat z databáze

# Load pandas and sqlalchemy's create_engine
import pandas as pd
from sqlalchemy import create_engine

# Create database engine to manage connections engine = create_engine("sqlite:///data.db")
# Load entire weather table by table name weather = pd.read_sql("weather", engine)
Streamlined Data Ingestion with pandas
# Create database engine to manage connections
engine = create_engine("sqlite:///data.db")

# Load entire weather table with SQL weather = pd.read_sql("SELECT * FROM weather", engine)
print(weather.head())
       station                         name  latitude  ...   prcp  snow  tavg tmax  tmin
0  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         52    42
1  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    39
2  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    42
3  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         51    40
4  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.75   0.0         61    50

[5 rows x 13 columns]
Streamlined Data Ingestion with pandas

Pojďme si procvičit!

Streamlined Data Ingestion with pandas

Preparing Video For Download...