2014年8月4日月曜日

開発環境

Head First SQL ―頭とからだで覚えるSQLの基本 (Lynn Beighley(著)、 佐藤 直生 (監訳)、 松永 多苗子 (翻訳)、オライリージャパン)の4章(賢いテーブル設計: 正規化の理由)、自分で考えてみよう(p.161)を解いてみる。

自分で考えてみよう(p.161)

コード(BBEdit, Emacs)

sample161.py

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

import sqlite3

connection = sqlite3.connect('chapter4.sqlite')
cursor = connection.cursor()

def p(msg):
    print(msg)
    for row in cursor.fetchall():
        print(row)

def p_all(table):
    cursor.execute("""SELECT * FROM {0}""".format(table))
    print(tuple(map(lambda header: header[0], cursor.description)))
    p(table)

p_all('fish_info')

cursor.execute("""
SELECT * FROM fish_info
WHERE location LIKE '%NJ'
""")

p('ニュージャージー州(NZ)')

print()

p_all('fish_records')

cursor.execute("""
SELECT * FROM fish_records
WHERE state LIKE '%NJ'
""")

p('ニュージャージー州(NZ)')

connection.commit()
connection.close()

入出力結果(Terminal, IPython)

$ ./sample161.py
('common', 'species', 'location', 'weight')
fish_info
('bass, largemouth', 'M. salmoides', 'Montgomery Lake, GA', '22 lb 4 oz')
('walleye', 'S. vitreus', 'Old Hickory Lake, TN', '25 lb 0 oz')
('trout, cutthroat', 'O. Clarki', 'Pyramid Lake, NV', '41 lb 0 oz')
('perch, yellow', 'P. Flavescens', 'Bordentown, NJ', '4 lb 3 oz')
('bluegill', 'L. Macrochirus', 'Ketona Lake, AL', '4 lb 12 oz')
('gar, longnose', 'L. Osseus', 'Trinity River, TX', '50 lb 5 oz')
('crappie, white', 'P. annularis', 'Enid Dam, MS', '5 lb 3 oz')
('pickerel, grass', 'E. americanus', 'Dewart Lake, IN', '1 lb 0 oz')
('goldfish', 'C. auratus', 'Lake Hodges, CA', '6 lb 10 oz')
('salmon, chinook', 'O. Tshawytscha', 'Kenai River, AK', '97 lb 4 oz')
ニュージャージー州(NZ)
('perch, yellow', 'P. Flavescens', 'Bordentown, NJ', '4 lb 3 oz')

('first_name', 'last_name', 'common', 'location', 'state', 'weight', 'date')
fish_records
('George', 'Perry', 'bass, largemouth', 'Montgomery Lake', 'GA', '22 lb 4 oz', '1932-06-02')
('Mabry', 'Harper', 'walleye', 'Old Hickory Lake', 'TN', '25 lb 0 oz', '1960-08-02')
('John', 'Skimmerhorn', 'trout, cutthroat', 'Pyramid Lake', 'NV', '41 lb 0 oz', '1925-12-1')
('C.C.', 'Abbot', 'perch, yellow', 'Bordentown', 'NJ', '4 lb 3 oz', '1865-5-1')
('T.S.', 'Hudson', 'bluegill', 'Ketona Lake', 'AL', '4 lb 12 oz', '1950-4-9')
('Townsend', 'Miller', 'gar, longnose', 'Trinity River', 'TX', '50 lb 5 oz', '1954-7-30')
('Fred', 'Bright', 'crappie, white', 'Enid Dam', 'MS', '5 lb 3 oz', '1957-7-31')
('Mike', 'Berg', 'pickerel, grass', 'Dewart Lake', 'IN', '1 lb 0 oz', '1990-6-9')
('Florentino', 'Abena', 'goldfish', 'Lake Hodges', 'CA', '6 lb 10 oz', '1996-4-17')
('Les', 'Anderson', 'salmon, chinook', 'Kenai River', 'AK', '97 lb 4 oz', '1985-5-17')
ニュージャージー州(NZ)
('C.C.', 'Abbot', 'perch, yellow', 'Bordentown', 'NJ', '4 lb 3 oz', '1865-5-1')
$

0 コメント:

コメントを投稿