Relations SQL

Introduction aux bases de données en Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Relations

  • Évitent les doublons de données
  • Permettent de modifier à un seul endroit
  • Utiles pour extraire des infos d'une table peu consultée
Introduction aux bases de données en Python

Relations

Introduction aux bases de données en Python

Jointures automatiques

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'),
 ...
Introduction aux bases de données en Python

join

  • Accepte une Table et, au besoin, une expression qui décrit le lien entre les deux tables
  • L'expression est inutile si la relation est prédéfinie et disponible par réflexion
  • Placée juste après select() et avant where(), order_by() ou group_by()
Introduction aux bases de données en Python

select_from()

  • Remplace la clause FROM par défaut (dérivée) par une jointure
  • Encapsule la clause join()
Introduction aux bases de données en Python

Exemple : 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
Introduction aux bases de données en Python

Joindre des tables sans relation prédéfinie

  • join accepte une Table et, au besoin, une expression qui décrit le lien entre les deux tables
  • N'assemble que les lignes avec des valeurs correspondantes entre les deux colonnes
  • Évitez de joindre des colonnes de types différents
Introduction aux bases de données en Python

Exemple : 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
Introduction aux bases de données en Python

Passons à la pratique !

Introduction aux bases de données en Python

Preparing Video For Download...