以前公開したLocalDB.jsのMicroPython版「LocalDB.py」を公開しました。
github.com
今回もソースの整形やテスト・修正、公開のためのコメントやドキュメント作成で生成AIの力を借りてます。
LocalDB.pyは、MicroPython環境で標準的なSQL構文を使用してデータを操作できるシンプルなライブラリです。すべてのデータはJSONファイルに自動的に保存されるため、電源を切ってもデータが失われません。ESP32、ESP8266、Raspberry Pi Picoなどのマイコンで動作し、標準のPython 3.xでも使用できます。
主な機能
1. SQL操作
- CREATE TABLE - テーブルの作成
- INSERT - データの挿入
- SELECT - データの取得
- UPDATE - データの更新
- DELETE - データの削除
2. WHERE句と演算子
- 比較演算子:=, !=, <>, >, <, >=, <=
- LIKE - パターンマッチング
- IN / NOT IN - リスト内の値チェック
- BETWEEN - 範囲チェック
- IS NULL / IS NOT NULL - NULL値チェック
3. SELECT句の機能
- ORDER BY - 結果のソート(昇順・降順)
- GROUP BY + HAVING - グループ化と集計
- LIMIT + OFFSET - ページネーション
- DISTINCT - 重複排除
4. JOIN機能
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- CROSS JOIN
5. 集約関数
- COUNT - 件数カウント
- SUM - 合計
- AVG - 平均
- MAX - 最大値
- MIN - 最小値
6. スカラー関数
- UPPER / LOWER - 大文字・小文字変換
- LENGTH - 文字列長
使用方法
簡単ですが、実装例です。
from localdb import LocalDB # データベースインスタンスの作成 db = LocalDB('myapp') # テーブルの作成 db.execute(""" CREATE TABLE users (id, name, age) """) # データの挿入 db.execute(""" INSERT INTO users VALUES (1, 'Taro', 30) """) # データの取得 result = db.execute(""" SELECT * FROM users WHERE age > 25 ORDER BY age DESC """) print(result) # データの更新 db.execute(""" UPDATE users SET age = 31 WHERE id = 1 """) # データの削除 db.execute(""" DELETE FROM users WHERE id = 1 """) # データベースを閉じる db.close()
データの保存先
データはデフォルトで localdb/ フォルダ内にJSONファイルとして保存されます。保存先は変更可能です。
# デフォルト: localdb/ フォルダに保存 db = LocalDB('myapp') # カスタムフォルダを指定 db = LocalDB('myapp', storage_path='data') # カレントディレクトリに保存 db = LocalDB('myapp', storage_path='')
対応プラットフォーム
| プラットフォーム | 状態 |
|---|---|
| ESP32 | 動作確認済み |
| ESP8266 | 対応 |
| Raspberry Pi Pico | 対応 |
| 標準Python 3.x | 動作確認済み |
LocalDB.jsとの違い
- 保存先:localStorage → JSONファイル
- サブクエリ:未対応(メモリ制約のため)
- CONCAT関数:未対応
マイコンのメモリ制約を考慮して、一部の機能を省略していますが、基本的なSQL操作は同じ構文で使用できます。

![[改訂第5版]SQLポケットリファレンス (Pocket reference) [改訂第5版]SQLポケットリファレンス (Pocket reference)](https://m.media-amazon.com/images/I/41x2MwttjoL._SL500_.jpg)

