開発環境
- 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. 107).を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3 import psycopg2 as sql conn = sql.connect(database='gregs_list', user='kamimura') cursor = conn.cursor() _sql = 'select * from drink_info' cursor.execute(_sql) print(', '.join([column[0] for column in cursor.description])) for row in cursor.fetchall(): print(row) _sqls = [ ''' select drink_name, calories from drink_info where calories > 60 or calories < 30 ''', ''' select drink_name from drink_info where substring(drink_name from 1 for 1) between 'オ' and 'グ' ''', ''' select drink_name, calories from drink_info where calories between 60 and 30 ''' # このクエリは満たすものが存在しない ] for _sql in _sqls: print(_sql) cursor.execute(_sql) for row in cursor.fetchall(): print(row) cursor.close() conn.close()
入出力結果(Terminal, cmd(コマンドプロンプト), Jupyter(IPython))
$ ./sample10.py drink_name, cost, carbs, color, ice, calories ('ブラックソーン', 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 drink_name, calories from drink_info where calories > 60 or calories < 30 ('ブルームーン', 12) ('ライムフィズ', 24) ('キスオンザリップス', 171) ('ホットゴールド', 135) ('ローンツリー', 17) ('ブルフロッグ', 80) ('ソーダアンドイット', 19) select drink_name from drink_info where substring(drink_name from 1 for 1) between 'オ' and 'グ' ('オーマイゴッシュ',) ('キスオンザリップス',) ('グレイハウンド',) select drink_name, calories from drink_info where calories between 60 and 30 $
(データ型が違うからか、日本語固有の問題なのかからか、substringで一文字目を抽出しないとbetweenの結果は何も得られなかった。)
0 コメント:
コメントを投稿