Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした