Python
python3

軽量ドキュメントデータベースTinyDBが便利

TinyDBとは

TinyDBはPure Pythonなドキュメント型データベース.サーバーを立てる必要が無いのが特徴で,手軽にDBライクな操作ができる点がおすすめ.個人でDBを使用する場合や試験環境ですぐに使いたい場合など,手間なく導入できるのでとにかく早い.ドキュメントはこちら.

参考サイト

http://symfoware.blog68.fc2.com/blog-entry-1830.html
http://esu-ko.hatenablog.com/entry/2016/03/01/Python%E3%81%A7mongo%E3%82%84json%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%ABtinydb%E3%82%92%E4%BD%BF%E3%81%86

導入

pip install tinydb

使い方

基本的な使い方

#モジュールのインポート
from tinydb import TinyDB, Query

#データベースの作成
db = TinyDB('sample.json')

#名前と年齢に関するデータの作成
#辞書型で挿入
db.insert({'name':'Bob', 'age':31})
db.insert({'name':'Jane', 'age':22})

#全データの取得
db.all()
'''[{'age': 31, 'name': 'Bob'}, {'age': 22, 'name': 'Jane'}]'''

#複数渡すとき
dic_list = [{'name':'John', 'age':25}, {'name':'Elen', 'age':40}]
db.insert_multiple(dic_list)

#ループ処理
for item in db:
    print(item)
'''
{'name': 'Bob', 'age': 31}
{'name': 'Jane', 'age': 22}
{'name': 'John', 'age': 25}
{'name': 'Elen', 'age': 40}
'''

Queryオブジェクトを使用したデータの検索

#Queryオブジェクトを作成
que = Query()

#'name'=='Bob'のデータを検索
db.search(que.name == 'Bob')
'''[{'age': 31, 'name': 'Bob'}]'''

#条件式を指定できる
#'age'<30のデータを検索
db.search(que.age < 30)
'''[{'age': 22, 'name': 'Jane'}, {'age': 25, 'name': 'John'}]'''

#ループ処理したいとき
for item in db.search(que.age < 30):
    print(item)
'''
{'name': 'Jane', 'age': 22}
{'name': 'John', 'age': 25}
'''

データの変更,削除

#データの更新
#'name'=='John'の'age'を26に変更
db.update({'age':'26'}, que.name == 'John')

#データの削除
#'age'<30のデータを削除
db.remove(que.age < 30)

db.all()
'''[{'age': 31, 'name': 'Bob'}, {'age': 40, 'name': 'Elen'}]'''

#全データを削除
db.purge()

db.all()
'''[]'''

テーブルの作成

#テーブルの作成
table = db.table('table')
#データの挿入
table.insert(dict)
#全データの表示
table.all()
#全テーブルの削除
db.purge_tables()

インメモリーで使用する場合

from tinydb.storages import MemoryStorage
db = TinyDB(storage = MemoryStorage)

おわり