開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- PostgreSQL (ORDBMS(object-relational database management system))
- Python 3.7 (プログラミング言語)
- psycopg2(パッケージ)
Head First SQL ―頭とからだで覚えるSQLの基本 (Lynn Beighley (著), 佐藤 直生 (監訳)、松永 多苗子 (翻訳)、オライリージャパン)の2章(SELECT文 - 天賦のデータ検索)、自分で考えてみよう(p. 89).を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3 import psycopg2 as sql conn = sql.connect(database='gregs_list', user='kamimura') cursor = conn.cursor() _sql = '''drop table drink_info''' cursor.execute(_sql) _sql = '''create table drink_info ( drink_name varchar(20), cost real, carbs real, color varchar(5), ice character, calories integer)''' cursor.execute(_sql) _sql = '''insert into drink_info values(%s, %s, %s, %s, %s, %s)''' infos = [('ブラックソーン', 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)] for info in infos: cursor.execute(_sql, info) conn.commit() _sqls = [ '''select * from drink_info''', ''' select cost from drink_info where ice = 'Y' AND color = '黄' AND calories > 33 ''', ''' select drink_name, color from drink_info where carbs <= 4 AND ice = 'Y' ''', ''' select cost from drink_info where calories >= 80 ''', ''' select ice from drink_info where drink_name='グレイハウンド' OR drink_name='キスオンザリップス' ''' ] for _sql in _sqls: print(_sql) cursor.execute(_sql) for row in cursor.fetchall(): print(row) print() cursor.close() conn.close()
入出力結果(Terminal, cmd(コマンドプロンプト), Jupyter(IPython))
$ ./sample6.py select * from drink_info ('ブラックソーン', 3.0, 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.0, 14.0, '黄', 'Y', 50) ('インディアンサマー', 2.8, 7.2, '茶', 'N', 30) ('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80) ('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19) select cost from drink_info where ice = 'Y' AND color = '黄' AND calories > 33 (4.0,) select drink_name, color from drink_info where carbs <= 4 AND ice = 'Y' ('ブルームーン', '青') select cost from drink_info where calories >= 80 (5.5,) (3.2,) (2.6,) select ice from drink_info where drink_name='グレイハウンド' OR drink_name='キスオンザリップス' ('Y',) ('Y',) $
0 コメント:
コメントを投稿