$5 ファイルからの入力

5-3 簡単なリレーショナルデータベース

スーパーカーの例を使って、簡単なリレーショナルデータベースを作ってみましょう。 リレーショナルデータベースの考え方は、Perl編のページを見て下さい。
ポイントは、Perlでいうところの連想配列、Pythonでは「ディクショナリ」(辞書)と呼ばれる配列です。 各ファイルを読んで「表の中身」を作る部分だけ説明します。

  1: WFILE = open('wc2.text', 'r')
  2: DFILE = open('driver.text', 'r')
  3: TFILE = open('team.text', 'r')
  4: 
  5: LinesW = WFILE.readlines()
  6: LinesD = DFILE.readlines()
  7: LinesT = TFILE.readlines()
  8: 
  9: WFILE.close()
 10: DFILE.close()
 11: TFILE.close()
 12: 
 13: DriverName = {}
 14: DriverKuni = {}
 15: TeamName = {}
 16: TeamWeb = {}
 17: Table = []
 18: 
 19: for LineD in LinesD:
 20:    [Key, Name, Kuni] = string.split (LineD, '\t')
 21:    DriverName[Key] = Name
 22:    DriverKuni[Key] = Kuni
 23: 
 24: for LineT in LinesT:
 25:    [Key, Name, Web] = string.split (LineT, '\t')
 26:    TeamName[Key] = Name
 27:    TeamWeb[Key] = Web
 28: 
 29: for LineC in LinesC:
 30:    [Year, DName, TName, Car] = LineC.split ('\t')
 31:    TLine = '<TR><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><B>%s</B></TD></TR>\n' %\
 32:              (Year, DriverName[DName] , DriverKuni[DName] , TeamWeb[TName],TeamName[TName] ,Car)
 33:    Table.append(TLine)

Pythonのディクショナリは、要素(キーと値のペア)を直接書く場合は「Dic = {Key1: Value1, Key2: Value2}」となりますが、 一つ一つの要素に代入するには「Dic[Key1]=Value1」となります。 上のプログラムでは、21、22、26、27行目で使ってます。 しかし、いきなり代入はできず、あらかじめそのディクショナリを定義しておく必要があります。 それが、13〜16行目で、空のディクショナリを定義しています。


Next: 6-1 データの検索

Previous: 5-2 タブ区切りデータから表をつくる

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net