【Python】NoSQLデータベースTinyDBのインストール

【Python】NoSQLデータベースTinyDBのインストール プログラミング

「NoSQLをPythonで利用したい」
「ドキュメント指向のデータベースを導入したい」
「事情により、MongoDBを利用することができない・・・」

このような場合には、TinyDBがオススメです。
この記事では、NoSQLデータベースTinyDBについて解説しています。

本記事の内容

  • TinyDBとは?
  • TinyDBのシステム要件
  • TinyDBのインストール
  • TinyDBの動作確認

それでは、上記に沿って解説していきます。

TinyDBとは?

TinyDBとは、ドキュメント指向のデータベースのことです。
ドキュメント指向のデータベースと言えば、MongoDBがあります。

MongoDBがインストールできるなら、TinyDBを使うまでもありません。
MongoDBのインストールについては、次の記事で解説しています。

ただし、そこまでは必要はないという場合もあるでしょう。
ちょっとしたアプリであれば、MongoDBはオーバースペックと言えます。

それに、MongoDBをインストールする権限がないこともあり得ます。
それでも、ドキュメント指向のデータベースを利用したいケースもあるでしょう。

そんな場合には、TinyDBが効果的です。
TinyDBは、Pythonのみで書かれています。

そのため、TinyDBの導入を簡単に行うことができます。
Pythonさえ動けば、基本的にはどこでもインストール可能ですからね。

以上、TinyDBについて説明しました。
次は、TinyDBのシステム要件を説明します。

TinyDBのシステム要件

現時点(2022年8月)でのTinyDBの最新バージョンは、4.7.0となります。
この最新バージョンは、2022年2月20日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

以下のPython公式開発サイクルとは、Python 3.6だけが異なります。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

Python 3.6のサポートは、2021年で終了しています。
そのため、ここではPython 3.7以降の利用を推奨します。

以上、TinyDBのシステム要件を説明しました。
次は、TinyDBのインストールを説明します。

TinyDBのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.2.2
setuptools 63.4.2
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、TinyDBのインストールです。
TinyDBのインストールは、以下のコマンドとなります。

pip install tinydb

TinyDBのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package    Version
---------- -------
pip        22.2.2
setuptools 63.4.2
tinydb     4.7.0
wheel      0.36.2

TinyDBが依存するパッケージは、ありません。
そのため、TinyDBは既存環境に容易に導入可能です。

以上、TinyDBのインストールを説明しました。
次は、TinyDBの動作確認を説明します。

TinyDBの動作確認

TinyDBの動作確認を行います。
それぞれ以下の操作を確認していきます。

  • 挿入(INSERT)
  • 照会(SELECT)
  • 更新(UPDATE)
  • 削除(DELETE)

挿入(INSERT)

本来データベースを扱うなら、データベースの作成が事前に必要です。
さらには、テーブル作成も必要になります。

TinyDBの場合は、挿入の処理でそれらをまとめて行います。
そのためのコードが、以下。

from tinydb import TinyDB

file_path = "db.json"

db = TinyDB(file_path)
users = db.table('users')

users.insert({'id': 1, 'name': '山田太郎', 'age': 20})
users.insert({'id': 2, 'name': '佐藤次郎', 'age': 30})
users.insert({'id': 3, 'name': '田中三郎', 'age': 40})
users.insert({'id': 4, 'name': '中村四郎', 'age': 50})
users.insert({'id': 5, 'name': '野口五郎', 'age': 66})

上記を実行すると、「db.json」が作成されます。
内容を確認すると、次の内容となります。

db.json

{"users": {"1": {"id": 1, "name": "\u5c71\u7530\u592a\u90ce", "age": 20}, "2": {"id": 2, "name": "\u4f50\u85e4\u6b21\u90ce", "age": 30}, "3": {"id": 3, "name": "\u7530\u4e2d\u4e09\u90ce", "age": 40}, "4": {"id": 4, "name": "\u4e2d\u6751\u56db\u90ce", "age": 50}, "5": {"id": 5, "name": "\u91ce\u53e3\u4e94\u90ce", "age": 66}, "6": {"id": 1, "name": "\u5c71\u7530\u592a\u90ce", "age": 20}, "7": {"id": 2, "name": "\u4f50\u85e4\u6b21\u90ce", "age": 30}, "8": {"id": 3, "name": "\u7530\u4e2d\u4e09\u90ce", "age": 40}, "9": {"id": 4, "name": "\u4e2d\u6751\u56db\u90ce", "age": 50}, "10": {"id": 5, "name": "\u91ce\u53e3\u4e94\u90ce", "age": 66}}}

このままだとわかりにくいので、JSONビューワーで確認しましょう。

意図した通りにデータが登録されています。
「users」はテーブルに該当します。

この場合、「db.json」がデータベースに該当することになります。

照会(SELECT)

照会には、2つのパターンがあります。

  • Queryモジュールを利用する
  • whereモジュールを利用する

それぞれのコードは、以下。

Queryモジュールを利用する

from tinydb import TinyDB
from tinydb import Query

file_path = "db.json"

db = TinyDB(file_path)
users = db.table('users')

User = Query()

result_1 = users.search(User.name == '田中三郎')
print("結果その1")
print(result_1)

result_2 = users.search((User.age >= 20) &amp; (User.age <= 30))
print("結果その2")
print(result_2)

whereモジュールを利用する

from tinydb import TinyDB
from tinydb import where

file_path = "db.json"

db = TinyDB(file_path)
users = db.table('users')

result_1 = users.search(where('name') == '田中三郎')
print("結果その1")
print(result_1)

result_2 = users.search((where('age') >= 20) &amp; (where('age') <= 30))
print("結果その2")
print(result_2)

実行した結果は、全く同じ結果となります。

結果その1
[{'id': 3, 'name': '田中三郎', 'age': 40}]
結果その2
[{'id': 1, 'name': '山田太郎', 'age': 20}, {'id': 2, 'name': '佐藤次郎', 'age': 30}]

使いやすい方を選びましょう。

更新(UPDATE)

基本的な構文は、以下となります。

db.update(your_operation(arguments), query)

query部分は、Queryかwhereのどちらかを設定します。
ここでは、whereモジュールを利用するパターンを載せておきます。

from tinydb import TinyDB
from tinydb import where

file_path = "db.json"

db = TinyDB(file_path)
users = db.table('users')

users.update({'age': 35}, where('id') == 2)

上記を実行すると、「db.json」の内容が一部更新されます。

削除(DELETE)

削除は、条件を付けるだけです。
ここでも、whereモジュールを利用するパターンを載せておきます。

from tinydb import TinyDB
from tinydb import where

file_path = "db.json"

db = TinyDB(file_path)
users = db.table('users')

users.remove(where('id') == 4)

上記を実行すると、1レコード(オブジェクト)が消えました。

以上、TinyDBの動作確認を説明しました。

タイトルとURLをコピーしました