計算機科学のブログ

SQL - Python - DELETE文とUPDATE文 - 役に立つ変更 - insert文 1

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

schema4.sql

select * from drink_info;

schema4_0.sql

insert into drink_info
values
(
    'キスオンザリップス',
    5.5,
    42.5,
    '紫',
    'Y',
    170
);
delete from drink_info where calories = 171;

schema4_1.sql

insert into drink_info
values
(
    'ブラックソーン',
    3,
    8.4,
    '金',
    'Y',
    33
);
insert into drink_info
values
(
    'グレイハウンド',
    4,
    14,
    '金',
    'Y',
    50
);
delete from drink_info where color = '黄';

コード

sample4.py

#! /usr/bin/env python3
import sqlite3

con = sqlite3.connect('sample.sqlite')
cur = con.cursor()

for i in range(3):
    with open(f'schema4.sql') as f:
        cur.execute(f.read())
    if (d := cur.description) is not None:
        print([t[0] for t in d])
    for row in cur.fetchall():
        print(row)
    with open(f'schema4_{i}.sql') as f:
        cur.executescript(f.read())
with open(f'schema4.sql') as f:
    cur.execute(f.read())
if (d := cur.description) is not None:
    print([t[0] for t in d])
for row in cur.fetchall():
    print(row)
cur.close()
con.close()

入出力結果(Terminal, Zsh)

% ./sample4.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)
['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)
['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)
['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)
%