Relazioni SQL

Introduzione ai database in Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Relazioni

  • Evitano dati duplicati
  • Permettono di cambiare una cosa in un solo punto
  • Utile per separare info da una tabella che serve di rado
Introduzione ai database in Python

Relazioni

Introduzione ai database in Python

Join automatici

stmt = select([census.columns.pop2008, 
        state_fact.columns.abbreviation])

results = connection.execute(stmt).fetchall() print(results)
[(95012, u'IL'),
 (95012, u'NJ'),
 (95012, u'ND'),
 (95012, u'OR'),
 (95012, u'DC'),
 (95012, u'WI'),
 ...
Introduzione ai database in Python

Join

  • Accetta una Tabella e un'espressione opzionale che spiega come le due tabelle sono collegate
  • L'espressione non serve se la relazione è predefinita e disponibile via riflessione
  • Viene subito dopo select() e prima di where(), order_by() o group_by()
Introduzione ai database in Python

select_from()

  • Sostituisce la clausola FROM predefinita con una join
  • Avvolge la clausola join()
Introduzione ai database in Python

Esempio di select_from()

stmt = select([func.sum(census.columns.pop2000)])

stmt = stmt.select_from(census.join(state_fact))
stmt = stmt.where(state_fact.columns.circuit_court == '10')
result = connection.execute(stmt).scalar() print(result)
14945252
Introduzione ai database in Python

Join senza relazione predefinita

  • Join accetta una Tabella e un'espressione opzionale che spiega il rapporto tra le due tabelle
  • Unisce solo i dati con valori corrispondenti tra le due colonne
  • Evita di unire colonne di tipi diversi
Introduzione ai database in Python

Esempio di select_from()

stmt = select([func.sum(census.columns.pop2000)])

stmt = stmt.select_from( census.join(state_fact, census.columns.state == state_fact.columns.name))
stmt = stmt.where( state_fact.columns.census_division_name == 'East South Central')
result = connection.execute(stmt).scalar() print(result)
16982311
Introduzione ai database in Python

Passiamo alla pratica!

Introduzione ai database in Python

Preparing Video For Download...