Hiyerarşik tablolarla çalışma

Python ile Veritabanlarına Giriş

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Hiyerarşik tablolar

  • Kendiyle ilişkili olurlar
  • Sık görülen yerler:
    • Organizasyonel
    • Coğrafi
    • Ağ
    • Grafik
Python ile Veritabanlarına Giriş

Hiyerarşik tablolar - örnek

hiyerarsik_tablo.jpg

Python ile Veritabanlarına Giriş

Hiyerarşik tablolar - alias()

  • Tabloya birden çok adla bakmayı gerektirir
  • Kullanabileceğimiz benzersiz bir başvuru oluşturur
Python ile Veritabanlarına Giriş

Hiyerarşik verileri sorgulama

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'), ...
Python ile Veritabanlarına Giriş

group_by ve func

  • group_by()'ı doğru takma ada hedeflemek önemlidir
  • Hangi sütunda fonksiyon kullandığınıza dikkat edin
  • Bir sorguda hem takma ad hem tablo adını kullanmıyorsanız, takma ad oluşturmayın
Python ile Veritabanlarına Giriş

Hiyerarşik verileri sorgulama

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'))]
Python ile Veritabanlarına Giriş

Haydi pratik yapalım!

Python ile Veritabanlarına Giriş

Preparing Video For Download...