開発環境
- OS X Mavericks - Apple、たまにFreeBSD 10(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4(プログラミング言語)
- SQLite (RDBMS(Relational Database Management System))
Head First SQL ―頭とからだで覚えるSQLの基本 (Lynn Beighley(著)、 佐藤 直生 (監訳)、 松永 多苗子 (翻訳)、オライリージャパン)の2章(SELECT 文: 天賦のデータ検索)、自分で考えてみよう(p.89)を解いてみる。
自分で考えてみよう(p.89)
コード(BBEdit, Emacs)
sample89.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import sqlite3 connection = sqlite3.connect('drinks.sqlite') cursor = connection.cursor() def p(msg): print(msg) for row in cursor.fetchall(): print(row) cursor.execute(""" CREATE TABLE drink_info( drink_name VARCHAR(20), cost DEC, carbs DEC, color VARCHAR(5), ice CHAR(1), calories INT) """) for info in [('ブラックソーン', 3, 8.4, '黄', 'Y', 33), ('ブルームーン', 2.5, 3.2, '青', 'Y', 12), ('オーマイゴッシュ', 3.5, 8.6, '橙', 'Y', 35), ('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24), ('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 171), ('ホットゴールド', 3.2, 32.1, '橙', 'N', 135), ('ローンツリー', 3.6, 4.2, '赤', 'Y', 17), ('グレイハウンド', 4, 14, '黄', 'Y', 50), ('インディアンサマー', 2.8, 7.2, '茶', 'N', 30), ('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80), ('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)]: cursor.execute(""" INSERT INTO drink_info VALUES( '{0}', {1}, {2}, '{3}', '{4}', {5}) """.format(*info)) connection.commit() cursor.execute("""SELECT * FROM drink_info""") print(tuple(map(lambda header: header[0], cursor.description))) p('全て') cursor.execute(""" SELECT cost FROM drink_info WHERE ice = 'Y' AND color = '黄' AND calories > 33 """) p('1') cursor.execute(""" SELECT drink_name, color FROM drink_info WHERE carbs <= 5 AND ice = 'Y' """) p('2') cursor.execute(""" SELECT cost FROM drink_info WHERE calories > 80 """) p('3') cursor.execute(""" SELECT color, ice FROM drink_info WHERE drink_name = 'グレイハウンド' OR drink_name = 'キスオンザリップス' """) p('4') connection.close()
入出力結果(Terminal, IPython)
$ ./sample89.py ('drink_name', 'cost', 'carbs', 'color', 'ice', 'calories') 全て ('ブラックソーン', 3, 8.4, '黄', 'Y', 33) ('ブルームーン', 2.5, 3.2, '青', 'Y', 12) ('オーマイゴッシュ', 3.5, 8.6, '橙', 'Y', 35) ('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24) ('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 171) ('ホットゴールド', 3.2, 32.1, '橙', 'N', 135) ('ローンツリー', 3.6, 4.2, '赤', 'Y', 17) ('グレイハウンド', 4, 14, '黄', 'Y', 50) ('インディアンサマー', 2.8, 7.2, '茶', 'N', 30) ('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80) ('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19) 1 (4,) 2 ('ブルームーン', '青') ('ローンツリー', '赤') 3 (5.5,) (3.2,) 4 ('紫', 'Y') ('黄', 'Y') $
0 コメント:
コメントを投稿