2018年12月18日火曜日

開発環境

Head First SQL ―頭とからだで覚えるSQLの基本 (Lynn Beighley (著), 佐藤 直生 (監訳)、松永 多苗子 (翻訳)、オライリージャパン)の3章(DELETE文とUPDATE文 - 役に立つ変更)、自分で考えてみよう(p. 136).を取り組んでみる。

コード(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 = [
    #     '''
    # delete from drink_info
    # where drink_name = 'キスオンザリップス'
    # ''',
    #     '''
    # insert into drink_info values(
    # 'キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
    # ''',
    #     '''
    # delete from drink_info
    # where color = '黄'
    # ''',
    #     '''
    # insert into drink_info values(
    # 'ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
    # ''',
    #     '''
    # insert into drink_info values(
    # 'グレイハウンド', 4.0, 14.0, '金', 'Y', 50)
    # ''',
    #     '''
    # delete from drink_info
    # where cost = 3.5
    # ''',
    '''
insert into drink_info values(
'オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)
''',
    '''
delete from drink_info
where cost = 2.5
''',
    '''
insert into drink_info values(
'ブルームーン', 3.5, 3.2, '青', 'Y', 12)
''',
    '''
insert into drink_info values(
'ライムフィズ', 3.5, 5.4, '緑', 'Y', 24)
'''
]

for _sql in _sqls:
    print(_sql)
    cursor.execute(_sql)
    conn.commit()
    cursor.execute('select * from drink_info')
    print(', '.join([column[0] for column in cursor.description]))
    for row in cursor.fetchall():
        print(row)

cursor.close()
conn.close()

入出力結果(Terminal, cmd(コマンドプロンプト), Jupyter(IPython))

$ ./sample3.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)

delete from drink_info
where drink_name = 'キスオンザリップス'

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)
('ホットゴールド', 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)

insert into drink_info values(
'キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)

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)
('ホットゴールド', 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)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)

delete from drink_info
where color = '黄'

drink_name, cost, carbs, color, ice, calories
('ブルームーン', 2.5, 3.2, '青', 'Y', 12)
('オーマイゴッシュ', 3.5, 8.6, '橙', 'Y', 35)
('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24)
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)

insert into drink_info values(
'ブラックソーン', 3.0, 8.4, '金', 'Y', 33)

drink_name, cost, carbs, color, ice, calories
('ブルームーン', 2.5, 3.2, '青', 'Y', 12)
('オーマイゴッシュ', 3.5, 8.6, '橙', 'Y', 35)
('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24)
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)

insert into drink_info values(
'グレイハウンド', 4.0, 14.0, '金', 'Y', 50)

drink_name, cost, carbs, color, ice, calories
('ブルームーン', 2.5, 3.2, '青', 'Y', 12)
('オーマイゴッシュ', 3.5, 8.6, '橙', 'Y', 35)
('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24)
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)

delete from drink_info
where cost = 3.5

drink_name, cost, carbs, color, ice, calories
('ブルームーン', 2.5, 3.2, '青', 'Y', 12)
('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24)
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)

insert into drink_info value(
'オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)

Traceback (most recent call last):
  File "./sample3.py", line 59, in <module>
    cursor.execute(_sql)
psycopg2.ProgrammingError: syntax error at or near "value"
LINE 2: insert into drink_info value(
                               ^

iMac:ch3 kamimura$ ./sample3.py
drink_name, cost, carbs, color, ice, calories
('ブルームーン', 2.5, 3.2, '青', 'Y', 12)
('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24)
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)

insert into drink_info values(
'オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)

drink_name, cost, carbs, color, ice, calories
('ブルームーン', 2.5, 3.2, '青', 'Y', 12)
('ライムフィズ', 2.5, 5.4, '緑', 'Y', 24)
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)
('オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)

delete from drink_info
where cost = 2.5

drink_name, cost, carbs, color, ice, calories
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)
('オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)

insert into drink_info values(
'ブルームーン', 3.5, 3.2, '青', 'Y', 12)

drink_name, cost, carbs, color, ice, calories
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)
('オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)
('ブルームーン', 3.5, 3.2, '青', 'Y', 12)

insert into drink_info values(
'ライムフィズ', 3.5, 5.4, '緑', 'Y', 24)

drink_name, cost, carbs, color, ice, calories
('ホットゴールド', 3.2, 32.1, '橙', 'N', 135)
('ローンツリー', 3.6, 4.2, '赤', 'Y', 17)
('インディアンサマー', 2.8, 7.2, '茶', 'N', 30)
('ブルフロッグ', 2.6, 21.5, '黄褐色', 'Y', 80)
('ソーダアンドイット', 3.8, 4.7, '赤', 'N', 19)
('キスオンザリップス', 5.5, 42.5, '紫', 'Y', 170)
('ブラックソーン', 3.0, 8.4, '金', 'Y', 33)
('グレイハウンド', 4.0, 14.0, '金', 'Y', 50)
('オーマイゴッシュ', 4.5, 8.6, '橙', 'Y', 35)
('ブルームーン', 3.5, 3.2, '青', 'Y', 12)
('ライムフィズ', 3.5, 5.4, '緑', 'Y', 24)
$

0 コメント:

コメントを投稿