純Python開發面向文檔的數據庫:TinyDB
TinyDB是為了你的幸福
而優化的微小的,面向文檔的數據庫。它采用純Python開發并且沒有額外的需求。它非常適合于小的應用。

TinyDB 特性:
- tiny: 當前源代碼只有1200行(+ 600 lines tests). For comparison: Buzhug has about 2000 lines of code (w/o tests), CodernityDB has about 8000 lines of code (w/o tests).
- document oriented: 類似 MongoDB, 你可以在TinyDB中存儲任何文檔(represented as dict)
- optimized for your happiness: TinyDB的設計是簡單而有趣提供了一個簡單和干凈的API來使用。
- written in pure Python: TinyDB neither needs an external server (as e.g. PyMongo) nor any dependencies from PyPI.
- works on Python 2.6 – 3.4 and PyPy: TinyDB works on all modern versions of Python and PyPy.
- easily extensible: You can easily extend TinyDB by writing new storages or modify the behaviour of storages with Middlewares.
- nearly 100% test coverage: If you don't count that __repr__ methods and some abstract methods are not tested, TinyDB has a test coverage of 100%.
Example Code
>>> from tinydb import TinyDB, where
>>> db = TinyDB('/path/to/db.json')
>>> db.insert({'int': 1, 'char': 'a'})
>>> db.insert({'int': 1, 'char': 'b'}) Query Language
>>> # Search for a field value
>>> db.search(where('int') == 1)
[{'int': 1, 'char': 'a'}, {'int': 1, 'char': 'b'}]
>>> # Combine two queries with logical and
>>> db.search((where('int') == 1) & (where('char') == 'b'))
[{'int': 1, 'char': 'b'}]
>>> # Combine two queries with logical or
>>> db.search((where('char') == 'a') | (where('char') == 'b'))
[{'int': 1, 'char': 'a'}, {'int': 1, 'char': 'b'}]
>>> # More possible comparisons: != < > <= >=
>>> # More possible checks: where(...).matches(regex), where(...).test(your_test_func) Tables
>>> table = db.table('name')
>>> table.insert({'value': True})
>>> table.all()
[{'value': True}] Using Middlewares
>>> from tinydb.storages import JSONStorage
>>> from tinydb.middlewares import CachingMiddleware
>>> db = TinyDB('/path/to/db.json', storage=CachingMiddleware(JSONStorage)) 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!