2018年11月28日水曜日

開発環境

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 コメント:

コメントを投稿