イチから全部作ってみよう(32)PythonでSQLを実行してデータベースを操作する山浦恒央の“くみこみ”な話(201)(2/4 ページ)

» 2026年05月20日 06時00分 公開

4.今回のお題:ワイン商品テーブルの構築

 今回のお題は、Pythonプログラムを用いて、以下の仕様に基づいた商品テーブルを作成し、データの登録/抽出を行うことです(表1、表2)。

データ項目 説明 データ型 備考
id 商品ID INTEGER 主キー(Primary Key:テーブル内の各レコードを一意に識別するための列であり、重複およびNULLを許可しない制約のこと)
name 商品名 TEXT
image 商品画像 TEXT 画像のファイル名
vintage ビンテージ INTEGER 製造年
winery 生産者 TEXT
price 商品価格 INTEGER 販売価格
stock 在庫数 INTEGER 現在の在庫数
表1 商品テーブル

商品ID 商品名 画像 ビンテージ 生産者 商品価格 在庫数
1 ブルゴーニュ ピノノワール img1.png 2022 ドメーヌ・ヤマモト 5000 10
2 ブルゴーニュ ピノノワール img2.png 2023 ドメーヌ・スズキ 10000 20
3 ブルゴーニュ シャルドネ img3.png 2021 ドメーヌ・ヤマダ 4300 4
4 ブルゴーニュ シャルドネ img4.png 2021 ドメーヌ・ササキ 3670 8
表2 商品データ

 なお、ここでは、Pythonの文法説明は最小限にとどめ、データベースの操作に焦点を当てます。

4.1 データベースの作成

 まずは、プログラムからデータベースファイル(.db)を生成します(図3)。

図3 図3 データベース作成のイメージ

4.1.1 SQLiteで実行する場合

 SQLiteで実行する場合は、次のコマンドを実行します。

sqlite3 EC_Database.db

 コマンドを実行すると、指定した「EC_Database.db」が存在しない場合は新規作成し、存在する場合はそのファイルを開きます。

4.1.2 Pythonで実行する場合

 Pythonでは、標準ライブラリのsqlite3モジュールのconnect関数を使用しますので、以下のようにimportしてください。

import sqlite3
# データベースを作成(存在しない場合は新規作成)
db = sqlite3.connect("EC_Database.db")
# 切断
db.close()

4.1.3 実行方法

 Pythonの実行方法は、コマンドプロンプトから次のコマンドを入力します。

python ファイル名.py

 実行後、Pythonファイルと同階層にEC_Database.dbがあればOKです。

4.1.4 Pythonプログラムの解説

 Pythonプログラムの解説を下記に示します。

  • (1)import sqlite3
    SQLiteを操作するための標準ライブラリを読み込みます
  • (2)connect関数
    指定した名前のデータベースに接続します。ファイルが存在しない場合は、新規作成となります
  • (3)close関数
    データベースの接続を終了します

4.2 テーブルの作成

 データベースが作成できたので、データを格納するテーブルを定義します(図4)。

図4 図4 テーブル作成のイメージ[クリックで拡大]

4.2.1 SQLiteで実行する場合

 SQLiteで実行するには、CREATE TABLE文を使います。

CREATE TABLE IF NOT EXISTS Product (
	id INTEGER PRIMARY KEY,
	name TEXT,
	image TEXT,
	vintage INTEGER,
	winery TEXT,
	price INTEGER,
	stock INTEGER
);

4.2.2 Pythonで実行する場合

 Pythonで実行するには、次のように記述します。

import sqlite3
# データベースに接続し、一連の処理を実行する
with sqlite3.connect("EC_Database.db") as db:
    db.execute("""
    CREATE TABLE IF NOT EXISTS Product (
        id INTEGER PRIMARY KEY,
        name TEXT,
        image TEXT,
        vintage INTEGER,
        winery TEXT,
        price INTEGER,
        stock INTEGER
    )
    """)

4.2.3 Pythonプログラムの解説

 Pythonプログラムの解説を下記に示します。

  • (1)with構文
    ブロック内の処理が終了すると、接続を自動的に切断します
  • (2)connect関数
    データベースに接続します
  • (3)executeメソッド
    引数に渡したCREATE TABLE文を実行します

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR