【Python】データベース:TinyDBの特徴と使用方法

2021.09.08 /

【Python】データベース:TinyDBの特徴と使用方法

本記事ではPythonで小規模データベースを簡単に作成できるTinyDBの特徴と使用方法について解説していきます。

データベースにはSQLite3やMySQLなど様々な種類があります。
各データベースの特徴については以下記事をご参照ください。

多くのデータベースがある中で、Pythonでお手軽にデータベースを利用したい場合はTinyDBがお勧めです。

本記事を通して、TinyDBの使い方を覚えて、ぜひ作成するアプリケーションに利用してみてください。

TinyDBとは

TinyDBはPythonで利用されるドキュメント指向データベースと呼ばれる小規模のデータベースです。

サポートしているPythonのバージョンは、Python3.6以上です。

有名なデータベースにはSQLite3やMySQLなどありますが、TinyDBはそれらとは大きく異なります。

TinyDBでは1つのファイルが1つのデータベース(拡張子json)になり、そのデータベースはJSON形式のデータです。データベースに挿入するデータは辞書型のデータです。

JSONはシステム間のデータ交換におけるフォーマットの1つです。JSONについては以下記事をご参照下さい。

サーバーを立てる必要もなく、ドキュメント形式なので手軽にデータベースを利用できます。

小規模なアプリケーションで手軽にデータベースライクなものを実装したい場合に活躍します。

高パフォーマンスの機能を求めるならば、TinyDBではないデータベースをお勧めします。

TinyDBの特徴
  • Pythonで利用できるドキュメント指向データベース
  • 1つのファイルが1つのデータベース
  • データベースはJSON形式
  • サーバーを立てる必要がない

TinyDBの使用方法

TinyDBのインストール・インポート

TinyDBは標準ライブラリではないため、pipを使ってPyPIからインストールする必要があります。

pip install tinydb

PythonスクリプトでTinyDBを使用する場合は、先頭でTinyDBのライブラリからモジュールをインポートします。

from tinydb import TinyDB, Query

これによりスクリプト内でTinyDBが使用できる準備が整いました。

データベースの作成・接続

TinyDBで扱うデータベースはJSON形式のデータであり、拡張子はjsonです。

JSONデータベースへの新規作成または接続は次のように行います。

# データベースに接続または新規作成
db = TinyDB(データベース名)

データの挿入

データベースにデータ(辞書型)を挿入するにはinsert()メソッドを使用します。

db.insert({'programing':'Python', 'level':'high'})
db.insert({'programing':'PHP', 'level':'normal'})

全データを抽出するにはall()を使用します。

print(db.all())
# [{'programing': 'Python', 'level': 'high'}, {'programing': 'PHP', 'level': 'normal'}]

forループでデータを取得することもできます。

for item in db:
    print(item)
# {'programing': 'Python', 'level': 'high'}
# {'programing': 'PHP', 'level': 'normal'}

データの検索(抽出)

データベースから特定のデータを検索(抽出)する場合はQueryを利用します。

Data = Query()

上記で生成したQueryオブジェクトを利用してデータの検索をします。
データの検索にはsearch()メソッドを使って次のように使用します。

print(db.search(Data.level == 'high'))
# [{'programing': 'Python', 'level': 'high'}]

上記では、search()メソッドを用いてlevelがhighのデータを抽出しています。
検索結果はリストで返ってきます。

また以下のようにしてキーから値を抽出できます。

res = db.search(Data.level == 'high')
print(res[0]['programing'])
# Python

データの更新

データベース内のデータの更新にはupdate()メソッドを利用します。

# levelがnormalのデータをprograming:Japaに更新
db.update({'programing':'Java'}, Data.level == 'normal')
print(db.all())
# [{'programing': 'Python', 'level': 'high'}, {'programing': 'Java', 'level': 'normal'}]

データの削除

データベース内のデータを削除するにはremove()メソッドを利用します。

# levelがnormalのデータを削除
db.remove(Data.level == 'normal')
print(db.all())
# [{'programing': 'Python', 'level': 'high'}]

データベースのすべてのデータを削除するにはtruncate()メソッドを利用します。

db.truncate()

データベース操作メソッド

TinyDBでデータベースを操作するために用意されているメソッドは次のものがあります。

メソッド 説明
db.insert() 辞書型データを挿入する
db.all() データをすべて抽出する
db.search(query) クエリーにマッチしたデータのリストを抽出する
db.update(field, query) クエリーにマッチしたデータをfieldに更新する
db.remove(query) クエリーにマッチしたデータを削除する
db.truncate() データすべてを削除する
Query() クエリーオブジェクトを生成する

テーブルの作成

TinyDBでもテーブルを作成して、その中にデータを挿入して保存することが可能です。

from tinydb import TinyDB, Query

db = TinyDB('tinydb.json')

# テーブルの作成
table = db.table('test')

# テーブルにデータを挿入
table.insert({'programing':'Python', 'level':'high'})
table.insert({'programing':'PHP', 'level':'normal'})

# テーブルのデータをすべて表示
print(table.all())

まとめ

本記事「【Python】データベース:TinyDBの特徴と使用方法」はいかがでしたか。

小規模なアプリケーションであれば、簡単に利用できるTinyDBをぜひ使ってみてください。