Praca z tabelami hierarchicznymi

Wprowadzenie do baz danych w Pythonie

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Tabele hierarchiczne

  • Zawierają relację z samymi sobą
  • Często spotykane w strukturach:
    • Organizacyjnych
    • Geograficznych
    • Sieciowych
    • Grafowych
Wprowadzenie do baz danych w Pythonie

Tabele hierarchiczne – przykład

Tabela hierarchiczna

Wprowadzenie do baz danych w Pythonie

Tabele hierarchiczne – alias()

  • Wymaga sposobu na wyświetlenie tabeli pod wieloma nazwami
  • Tworzy unikalną referencję, której można używać
Wprowadzenie do baz danych w Pythonie

Zapytania do danych hierarchicznych

managers = employees.alias()

stmt = select( [managers.columns.name.label('manager'), employees.columns.name.label('employee')])
stmt = stmt.select_from(employees.join( managers, managers.columns.id == employees.columns.manager)
stmt = stmt.order_by(managers.columns.name)
print(connection.execute(stmt).fetchall())
[(u'FILLMORE', u'GRANT'),
 (u'FILLMORE', u'ADAMS'),
 (u'HARDING', u'TAFT'), ...
Wprowadzenie do baz danych w Pythonie

group_by i func

  • Ważne jest, aby group_by() wskazywało właściwy alias
  • Należy uważać, na jakich danych wykonywane są funkcje
  • Jeśli zapytanie nie wymaga jednoczesnego użycia aliasu i nazwy tabeli, nie należy tworzyć aliasu
Wprowadzenie do baz danych w Pythonie

Zapytania do danych hierarchicznych

managers = employees.alias()

stmt = select([managers.columns.name, func.sum(employees.columns.sal)])
stmt = stmt.select_from(employees.join( managers, managers.columns.id == employees.columns.manager)
stmt = stmt.group_by(managers.columns.name) print(connection.execute(stmt).fetchall())
[(u'FILLMORE', Decimal('96000.00')),
 (u'GARFIELD', Decimal('83500.00')),
 (u'HARDING', Decimal('52000.00')),
 (u'JACKSON', Decimal('197000.00'))]
Wprowadzenie do baz danych w Pythonie

Czas na ćwiczenia!

Wprowadzenie do baz danych w Pythonie

Preparing Video For Download...