2018年11月19日月曜日

開発環境

Head First SQL ―頭とからだで覚えるSQLの基本 (Lynn Beighley (著), 佐藤 直生 (監訳)、松永 多苗子 (翻訳)、オライリージャパン)の2章(SELECT文 - 天賦のデータ検索)、自分で考えてみよう(p. 60).を取り組んでみる。

コード(Emacs)

Python 3

#!/usr/bin/env python3
import psycopg2 as sql

conn = sql.connect(database='gregs_list', user='kamimura')
cursor = conn.cursor()

_sqls = ["select * from easy_drinks where main = 'スプライト'",
         'select * from easy_drinks where main = ソーダ',
         'select * from easy_drinks where amount2 = 6',
         'select * from easy_drinks where second = "オレンジジュース"',
         'select * from easy_drinks where amount1 < 1.5',
         "select * from easy_drinks where amount2 < '1'",
         "select * from easy_drinks where main > 'トニックウォーター'",
         "select * from easy_drinks where amount1 = '1.5'"]

# ソーダはシングルクォートで囲まれてないのでエラー
# オレンジジュースはダブルクォートで囲まれているのでエラー
for _sql in _sqls:
    print(_sql)
    try:
        cursor.execute(_sql)
        for row in cursor.fetchall():
            print(row)
        print()
    except Exception as err:
        print(type(err), err)
    conn.commit()

cursor.close()
conn.close()

入出力結果(Terminal, Jupyter(IPython))

$ ./sample2.py
select * from easy_drinks where main = 'スプライト'
('ライムフィズ', 'スプライト', 1.5, 'ライムジュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れる')

select * from easy_drinks where main = ソーダ
<class 'psycopg2.ProgrammingError'> column "ソーダ" does not exist
LINE 1: select * from easy_drinks where main = ソーダ
                                               ^

select * from easy_drinks where amount2 = 6
('ホットゴールド', '桃果汁', 3.0, 'オレンジジュース', 6.0, '熟したオレンジジュースをマグカップに注いで、桃果汁を加える')
('インディアンサマー', 'アップルジュース', 2.0, 'ホットティー', 6.0, 'ジュースをマグカップに加え、ホットティーで仕上げる')

select * from easy_drinks where second = "オレンジジュース"
<class 'psycopg2.ProgrammingError'> column "オレンジジュース" does not exist
LINE 1: select * from easy_drinks where second = "オレンジジュース"
                                                 ^

select * from easy_drinks where amount1 < 1.5
('オーマイゴッシュ', '桃果汁', 1.0, 'パイナップルジュース', 1.0, '氷と一緒にかき混ぜ、濾してショットグラスに入れる')

select * from easy_drinks where amount2 < '1'
('ブルームーン', 'ソーダ', 1.5, 'ブルーベリージュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れ、レモンを一搾り加える')
('ライムフィズ', 'スプライト', 1.5, 'ライムジュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れる')
('ローンツリー', 'ソーダ', 1.5, 'チェリージュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れる')

select * from easy_drinks where main > 'トニックウォーター'

select * from easy_drinks where amount1 = '1.5'
('ブラックソーン', 'トニックウォーター', 1.5, 'パイナップルジュース', 1.0, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れ、レモンを一搾り加える')
('ブルームーン', 'ソーダ', 1.5, 'ブルーベリージュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れ、レモンを一搾り加える')
('ライムフィズ', 'スプライト', 1.5, 'ライムジュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れる')
('ローンツリー', 'ソーダ', 1.5, 'チェリージュース', 0.75, '氷と一緒にかき混ぜ、濾してカクテルグラスに入れる')
('グレイハウンド', 'ソーダ', 1.5, 'グレープフルーツジュース', 5.0, '氷の上に注いで、よく混ぜる')
('ブルフロッグ', 'アイスティー', 1.5, 'レモネード', 5.0, '氷の上に注いでライムを一切れ加える')

$

0 コメント:

コメントを投稿