開発環境
- macOS Mojave - Apple
- Emacs (Text Editor)
- PostgreSQL (ORDBMS(object-relational database management system))
- Python 3.7 (プログラミング言語)
- psycopg2(パッケージ)
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 コメント:
コメントを投稿