Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
41
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

軽量ドキュメントデータベース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)

おわり

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
41
Help us understand the problem. What are the problem?