LoginSignup
38
46

More than 5 years have passed since last update.

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

Posted at

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)

おわり

38
46
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
46