tinydb
v4.8.2
TinyDB は、ユーザーの幸福のために最適化された軽量のドキュメント指向データベースです :) 純粋な Python で書かれており、外部依存関係はありません。ターゲットとなるのは、SQL-DB や外部データベース サーバーによって吹き飛ばされてしまうような小規模なアプリです。
TinyDB は次のとおりです。
dict
として表される) を TinyDB に保存できます。すべての詳細を直接確認するには、TinyDB ドキュメントにアクセスしてください。また、一般的な開発、拡張機能など、TinyDB に関連するすべてについて話し合ったり、ディスカッション フォーラムで TinyDB ベースのプロジェクトを紹介したりすることもできます。
TinyDB は Python 3.8 ~ 3.13 および PyPy3 でテストされています。
このプロジェクトはメンテナンス モードです。成熟した安定した状態に達しており、重要な新機能やアーキテクチャの変更は計画されていません。とはいえ、コミュニティによって提供されたバグ修正や機能のリリースは今後も行われます。これが何を意味するかについて詳しくは、こちらをご覧ください。
> >> from tinydb import TinyDB , Query
> >> db = TinyDB ( '/path/to/db.json' )
> >> db . insert ({ 'int' : 1 , 'char' : 'a' })
> >> db . insert ({ 'int' : 1 , 'char' : 'b' })
> >> User = Query ()
> >> # Search for a field value
>> > db . search ( User . name == 'John' )
[{ 'name' : 'John' , 'age' : 22 }, { 'name' : 'John' , 'age' : 37 }]
> >> # Combine two queries with logical and
>> > db . search (( User . name == 'John' ) & ( User . age <= 30 ))
[{ 'name' : 'John' , 'age' : 22 }]
> >> # Combine two queries with logical or
>> > db . search (( User . name == 'John' ) | ( User . name == 'Bob' ))
[{ 'name' : 'John' , 'age' : 22 }, { 'name' : 'John' , 'age' : 37 }, { 'name' : 'Bob' , 'age' : 42 }]
> >> # Negate a query with logical not
>> > db . search ( ~ ( User . name == 'John' ))
[{ 'name' : 'Megan' , 'age' : 27 }, { 'name' : 'Bob' , 'age' : 42 }]
> >> # Apply transformation to field with `map`
>> > db . search (( User . age . map ( lambda x : x + x ) == 44 ))
> >> [{ 'name' : 'John' , 'age' : 22 }]
> >> # More possible comparisons: != < > <= >=
>> > # More possible checks: where(...).matches(regex), where(...).test(your_test_func)
> >> table = db . table ( 'name' )
> >> table . insert ({ 'value' : True })
> >> table . all ()
[{ 'value' : True }]
> >> from tinydb . storages import JSONStorage
> >> from tinydb . middlewares import CachingMiddleware
> >> db = TinyDB ( '/path/to/db.json' , storage = CachingMiddleware ( JSONStorage ))
バグの報告、改善や新しいアイデアの議論、拡張機能の作成など、TinyDB への貢献は大歓迎です。開始方法は次のとおりです。