開発環境
- 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. 97).を取り組んでみる。
コード(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 doughnut_ratings''' cursor.execute(_sql) _sql = ''' create table doughnut_ratings ( location varchar(20), time time, date varchar(5), type varchar(20), rating smallint, comments varchar(20) ) ''' cursor.execute(_sql) _sql = '''insert into doughnut_ratings values(%s, %s, %s, %s, %s, %s)''' doughnut_ratings = [ ('クリスピーキング', '08:50 AM', '9/27', 'プレーングレーズド', 10, 'ほとんど完璧'), ('ダンカンズドーナツ', '08:59 AM', '8/25', None, 6, '油っこい'), ('スターバズコーヒー', '07:35 PM', '5/24', 'シナモンケーキ', 5, '硬いけど、おいしい'), ('スターバズコーヒー', '07:03 PM', '4/26', 'ジャム', 7, 'ジャムが足りない') ] for doughnut_rating in doughnut_ratings: cursor.execute(_sql, doughnut_rating) conn.commit() _sql = 'select * from doughnut_ratings' cursor.execute(_sql) print(', '.join([column[0] for column in cursor.description])) for row in cursor.fetchall(): print(row) _sqls = [ ''' select type from doughnut_ratings where location ='クリスピーキング' and rating <> 6 ''', ''' select type from doughnut_ratings where location ='クリスピーキング' and rating = 3 ''', ''' select type from doughnut_ratings where location ='スナッピーベーグル' and rating >= 6 ''', ''' select type from doughnut_ratings where location ='クリスピーキング' or rating > 5 ''', ''' select type from doughnut_ratings where location ='クリスピーキング' or rating = 3 ''', ''' select type from doughnut_ratings where location ='スナッピーベーグル' or rating = 6 ''' ] # プレーングレーズド # 該当なし # 該当なし # プレーングレーズド, None(NULL), ジャム # プレーングレーズド # None(NULL) 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))
$ ./sample8.py location, time, date, type, rating, comments ('クリスピーキング', datetime.time(8, 50), '9/27', 'プレーングレーズド', 10, 'ほとんど完璧') ('ダンカンズドーナツ', datetime.time(8, 59), '8/25', None, 6, '油っこい') ('スターバズコーヒー', datetime.time(19, 35), '5/24', 'シナモンケーキ', 5, '硬いけど、おいしい') ('スターバズコーヒー', datetime.time(19, 3), '4/26', 'ジャム', 7, 'ジャムが足りない') select type from doughnut_ratings where location ='クリスピーキング' and rating <> 6 ('プレーングレーズド',) select type from doughnut_ratings where location ='クリスピーキング' and rating = 3 select type from doughnut_ratings where location ='スナッピーベーグル' and rating >= 6 select type from doughnut_ratings where location ='クリスピーキング' or rating > 5 ('プレーングレーズド',) (None,) ('ジャム',) select type from doughnut_ratings where location ='クリスピーキング' or rating = 3 ('プレーングレーズド',) select type from doughnut_ratings where location ='スナッピーベーグル' or rating = 6 (None,) $
0 コメント:
コメントを投稿