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