TERM GL-0024

SQLite

読みえすきゅーらいと ENSQLite

別名エスキューライト

DEFINITION

組み込み用途に向いた軽量な SQL データベースエンジンで、単一のファイルにデータを保存できるため導入が容易です。

SQLite は、サーバーを別途立てずにアプリケーションへ組み込んで使える関係データベースエンジンです。データは 1 つのファイルに保存され、設定や運用の負担が小さいため、試作ツールから組み込み機器、デスクトップアプリまで広く使われます。扱うのは SQL ですが、一般的なクライアント・サーバー型 DB と比べると、導入のしやすさと移植性に強みがあります。

目次

1 つのファイルに収まるデータベース

SQLite の大きな特徴は、データベース全体が 1 つのファイルとして扱えることです。テーブル定義、データ、索引、トランザクションの状態まで、すべてがこのファイルにまとまります。バックアップもコピーで済み、アプリの配布物にそのまま含められるので、データベース用のサービスを常駐させる必要がありません。

この性質は、機械装置の設定値、ログ、検査結果の記録など、比較的小規模だが確実に保存したいデータと相性がよいです。たとえば制御盤用の設定画面や、計測ソフトの履歴保存では、ネットワーク越しの DB に依存せずに済むため、現場での扱いが楽になります。

SQL の書き方と使いどころ

SQLite は SQL を使って操作します。基本は他の関係データベースと同じで、`CREATE TABLE` で表を作り、`INSERT` で追加し、`SELECT` で検索します。よくある範囲では、日付・数値・文字列を表に分けて整理し、条件検索や集計を行う用途に向いています。

CREATE TABLE measurements (
  id INTEGER PRIMARY KEY,
  measured_at TEXT NOT NULL,
  pressure_mpa REAL,
  note TEXT
);

INSERT INTO measurements (measured_at, pressure_mpa, note)
VALUES ('2026-01-01 09:00:00', 12.4, 'start');

SELECT id, measured_at, pressure_mpa
FROM measurements
WHERE pressure_mpa >= 10.0
ORDER BY measured_at;

このような使い方では、アプリ側から必要なデータだけを取り出しやすくなります。SQL を覚えると、CSV のような一方向の保存よりも、検索・更新・削除を含むデータ管理がしやすくなります。

ACID と同時書き込みの考え方

SQLite はトランザクションを扱えます。トランザクションとは、複数の更新をひとまとまりとして扱い、途中で失敗したら元に戻せる仕組みです。一般に SQLite は ACID 特性を備え、データの一貫性を保ちやすい設計になっています。

ただし、同時に多くの書き込みが発生する用途では注意が必要です。SQLite は 1 つのデータベースファイルを共有するため、書き込み競合が増えると待ちが発生しやすくなります。読み取り中心の用途には強い一方で、複数のプロセスが高頻度に更新する大規模システムでは、サーバー型 DB のほうが適することがあります。

型のゆるさと列の設計

SQLite は動的型付けの性質が強く、列に対して厳密な固定型 DB ほど硬くありません。列の宣言はできますが、実際の格納では柔軟な振る舞いをするため、入力データの取り扱いには設計意図が必要です。特に数値・文字列・空値の混在が起きると、集計や比較で思わぬ結果になることがあります。

実務では、列名を明確にし、NULL を許すかどうか、文字列で持つか数値で持つかを先に決めておくと安定します。日付時刻は `TEXT` で ISO 形式にそろえる方法がよく使われますが、比較方法まで含めて決めておくことが大切です。

他のデータ保存方式との違い

SQLite は「ファイルに保存する DB」であり、JSON や CSV と用途が少し違います。JSON は階層構造を持たせやすく、設定ファイルや API のデータ交換に向きます。CSV は表形式の単純な受け渡しに便利ですが、更新や検索の機能はありません。SQLite は、これらよりもデータ操作の自由度が高く、複数条件の検索や整合性の管理がしやすい点が利点です。

方式得意なこと苦手なこと
SQLite検索、更新、整合性の維持超高頻度の同時書き込み
JSON階層データ、設定、受け渡し複雑な検索、集計
CSV単純な表の交換型情報、制約、更新管理

機械・電気系のツールでは、設定は JSON、履歴やログは SQLite、外部システムとの受け渡しは CSV というように使い分けると整理しやすくなります。

Python から使うときの基本形

SQLite は Python との相性がよく、標準ライブラリの `sqlite3` でそのまま使えます。外部ライブラリを入れずに扱えるため、試作や自動化スクリプトに組み込みやすいのが利点です。

import sqlite3

conn = sqlite3.connect("sample.db")
cur = conn.cursor()

cur.execute("CREATE TABLE IF NOT EXISTS logs (id INTEGER PRIMARY KEY, message TEXT)")
cur.execute("INSERT INTO logs (message) VALUES (?)", ("hello",))
conn.commit()

rows = cur.execute("SELECT id, message FROM logs").fetchall()
print(rows)

conn.close()

このように、ファイルを開いて SQL を実行し、必要なら `commit()` で確定します。自動化処理では、計測値の蓄積、装置状態の記録、実験条件の保存などに使うと、後から再現しやすいデータが残せます。

RELATED TERMS 関連用語

SQL データベース トランザクション インデックス Python JSON

USED IN この用語が出てくる記事

LATEST ARTICLES 新しい記事

記事の一覧へ ›
  • URLをコピーしました!
目次