開発環境
- 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 コメント:
コメントを投稿