SQL ilişkileri

Python ile Veritabanlarına Giriş

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

İlişkiler

  • Yinelenen veriyi önlememizi sağlar
  • Tek bir yerden değişiklik yapmayı kolaylaştırır
  • Nadiren ihtiyaç duyulan bilgiyi ayrı bir tabloda tutmaya yarar
Python ile Veritabanlarına Giriş

İlişkiler

Python ile Veritabanlarına Giriş

Otomatik join'ler

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

Join

  • İki tablonun ilişkisini açıklayan isteğe bağlı ifadeyle bir Tablo alır
  • İlişki önceden tanımlı ve yansıtma ile erişilebiliyorsa ifade gerekmez
  • select() ifadesinden hemen sonra, where(), order_by() veya group_by()'dan önce gelir
Python ile Veritabanlarına Giriş

select_from()

  • Varsayılan, türetilmiş FROM ifadesini bir join ile değiştirmek için kullanılır
  • join() ifadesini sarar
Python ile Veritabanlarına Giriş

select_from() örneği

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

Önceden tanımlı ilişki olmadan tabloları birleştirme

  • Join, bir Tablo ve iki tablo arasındaki ilişkiyi açıklayan isteğe bağlı bir ifade alır
  • Yalnızca iki sütunda eşleşen verileri birleştirir
  • Farklı türde sütunları birleştirmekten kaçının
Python ile Veritabanlarına Giriş

select_from() örneği

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

Hadi pratik yapalım!

Python ile Veritabanlarına Giriş

Preparing Video For Download...