スーパーカーの例を使って、簡単なリレーショナルデータベースを作ってみましょう。
リレーショナルデータベースの考え方は、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行目で、空のディクショナリを定義しています。