2018年12月6日木曜日

開発環境

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

コメントを投稿