GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

msiemens

tinydb – TinyDBは、あなたの幸福のために最適化された軽量のドキュメント指向のデータベースです:)

投稿日:

TinyDBは、あなたの幸福のために最適化された軽量のドキュメント指向のデータベースです:) https://tinydb.readthedocs.org

TinyDBは、あなたの幸福のために最適化された軽量のドキュメント指向のデータベースです:)これは純粋なPythonで書かれており、外部依存関係はありません。 ターゲットは、SQL-DBや外部データベースサーバーから吹き飛ばされる小さなアプリケーションです。

TinyDBは:

  • tiny:現在のソースコードには、1200行のコード(約40%のドキュメント)と1000行のテストがあります。 比較のため: Buzhugには約2500行のコード(w / oテスト)があり、 CodernityDBには約7000行のコード(w / oテスト)があります。
  • ドキュメント指向: MongoDBと同様に、任意のドキュメント( dictとして表される)をTinyDBに格納することができます。
  • あなたの幸せに最適です: TinyDBはシンプルでクリーンなAPIを提供することで、シンプルで楽しい使い方になっています。
  • 純粋なPythonで書かれています TinyDBは外部サーバ( PyMongoなど )とPyPIの依存関係を必要としません。
  • Python 2.7と 3.3〜3.6 およびPyPy: TinyDBはPythonとPyPyの現代版すべてで動作します。
  • パワフルな拡張性:新しいストレージを作成したり、ミドルウェアを使ってストレージの動作を変更することで、TinyDBを簡単に拡張できます。
  • 100%テストカバレッジ:説明は必要ありません。

すべての詳細にまっすぐ飛び込むには、 TinyDBのドキュメントに向かいます。 TinyDBに関連するすべてのことについて、一般的な開発、拡張、またはTinyDBベースのプロジェクトをディスカッションフォーラムで紹介することもできます。

コード例

>>> 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}]

>>> # 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))

サポートされているPythonのバージョン

TinyDBは、Python 2.7,3.3 – 3.6、PyPyでテストされています。

拡張機能

名前: tinyindex
ステータス: 実験中
説明: TinyDBのドキュメントのインデックス作成。 基本的には、(テーブルが変更されていない限り)確定的な文書を生成することが保証されます。
名前: tinymongo
ステータス: 実験中
説明: TinyDBをMongoDBのフラットファイルドロップイン置換として使用できる単純なラッパーです。
名前: TinyMP
ステータス: 安定
説明: http: //msgpack.orgを使用してtinydbへのMessagePackベースのストレージ拡張機能
名前: tinyrecord
ステータス: 安定
説明: Tinyrecordは、TinyDB NoSQLデータベースの実験的なアトミックトランザクションサポートを実装するライブラリです。 これは、スレッドロック内の時間を最小限に抑えることを可能にする、レコードを優先して実行するアーキテクチャを使用します。
名前: tinydb-serialization
ステータス: 安定
説明: tinydb-serializationは、TinyDBが処理できなかったオブジェクトのtinydb-serialization提供します。
名前: tinydb-smartcache
ステータス: 安定
説明: tinydb-smartcacheは、TinyDB用のスマートクエリキャッシュを提供します。 キャッシュが無効にならないように、ドキュメントの挿入/削除/更新時にクエリキャッシュを更新します。 データがほとんど変化しない間にたくさんのクエリを実行すると便利です。

貢献する

バグの報告、改善点や新しいアイデアの検討、拡張機能の作成など、TinyDBへの貢献は大歓迎です! 開始方法は次のとおりです。

  1. 未解決の問題がないかチェックするか、新しく問題を開いて機能のアイデアやバグに関する議論を開始する
  2. Githubでリポジトリをforkし、masterブランチから新しいブランチを作成し、変更を開始します( GitHub Flowと呼ばれます
  3. バグが修正されたか、その機能が期待どおりに機能していることを示すテストを書く
  4. プルリクエストを送信し、マージンがマージされ公開されるまでメンテナをバグしてください☺

変更ログ

未発表

まだ何もありません

v3.8.1(2018-03-26)

  • バグ修正:テストをパッケージとしてインストールしないでください( pull request#195を参照)

v3.8.0(2018-03-01)

  • 機能: db.table(name, cache_size=0)クエリキャッシュを無効にすることを許可する( pull request#187を参照)
  • 機能: db.write_back(docs)を置き換えるためにdb.write_back(docs)を追加db.write_back(docs) pull request#184を参照)

v3.7.0(2017-11-11)

v3.6.0(2017-10-05)

  • db.update(fields)を使用してすべてのドキュメントを更新できるようにします( issue#157を参照)。
  • 要素をドキュメントに名前を変更します。 doc.doc_idを使用してdoc.doc_idで利用可能なドキュメントIDが非推奨になりました( プルリクエスト#158を参照)

v3.5.0(2017-08-30)

v3.4.1(2017-08-23)

  • import tinyb; tinydb.__version__経由でTinyDBのバージョンをimport tinyb; tinydb.__version__ import tinyb; tinydb.__version__issue#148を参照)。

v3.4.0(2017-08-08)

  • 新しい更新操作をadd(key, value) :( add(key, value)substract(key, value) 、およびset(key, value)プル要求#145を参照)。

v3.3.1(2017-06-27)

  • 他のパッケージでTinyDBの販売を許可するには、相対インポートを使用します( プルリクエスト#142を参照)。

v3.3.0(2017-06-05)

  • すべてのドキュメントを生成するデータベースまたはテーブルを反復することができます( プルリクエスト#139を参照)。

v3.2.3(2017-04-22)

  • 検索結果のリストを変更する際に、クエリキャッシュの不慮の変更に伴うバグを修正しました( 問題132を参照)。

v3.2.2(2017-01-16)

  • 誤った使用を防ぐためにQueryコンストラクタを修正してください( 問題#117を参照)。

v3.2.1(2016-06-29)

v3.2.0(2016-04-25)

  • default_tableを介してデフォルトのテーブル名を指定する方法を追加します( pull request#98を参照)。
  • 単一のテーブルを削除するにはdb.purge_table(name)を追加します( プルリクエスト#100を参照)。
    • 途中で:100の問題を祝うとプルの要求! 毎回の貢献に感謝します!
  • APIドキュメントを拡張する( 問題#96を参照)。

v3.1.3(2016-02-14)

  • TinyDBインスタンスがgarbaggeを収集したときにTinyDBを破壊するバグを修正しました( 問題#92を参照)。

v3.1.2(2016-01-30)

  • Query.allクエリまたはQuery.allクエリでQuery.anyドキュメント(リスト、dicts)を使用するときのバグを修正しました( Query.all のフォーラム記事を参照 )。

v3.1.1(2016-01-23)

  • JSONシリアライズ可能ではないデータを含む辞書を挿入しても、ファイルは破損しません( 問題#89を参照)。
  • 無効なクエリキャッシュにつながる可能性があるLRUキャッシュのバグを修正しました( 問題#87を参照)。

v3.1.0(2015-12-31)

  • db.update(...)およびdb.remove(...)は、影響を受けるドキュメントIDを返すようになりdb.remove(...) 問題#83を参照)。
  • 無効な文書(つまりdictではなく)を挿入すると、データベースが破損するのではなく、エラーが発生するようになりました( 問題#74参照)。

v3.0.0(2015-11-13)

  • オーバーホールされたクエリモデル:
    • where('...').contains('...')where('...').search('...')名前を変更しwhere('...').search('...')
    • ORMのような使用法のサポート: User = Query(); db.search(User.name == 'John') User = Query(); db.search(User.name == 'John')
    • where('foo')Query().fooエイリアスです。
    • where('foo').has('bar')where('foo').barまたはQuery().foo.barます。
      • キーが有効なPython識別子でない場合、配列表記法を使用できます。 where('abc')Query()['abc']です。
    • 明示的にキーの存在を確認する必要があります: where('foo').exists()
  • v1からv2への移行は削除されました。
  • SmartCacheTablemsiemens / tinydb-smartcacheに移動されました
  • シリアライズがmsiemens / tinydb-serializationに移行しました
  • 空のストレージは、 ValueErrorを発生させる代わりに、 Noneを返すようになりました。 問題番号67参照)。

v2.4.0(2015-08-14)

v2.3.2(2015-05-20)

  • SerializationMiddlewareで忘れたデバッグ出力を修正します( 問題#55を参照)。
  • CachingMiddlewareを使用しているときに「無視された例外」警告を修正しました( プルリクエスト#54を参照)
  • OSX Yosemite上のTinyDBをチェックアウトする際に、シンボリックリンクの問題を修正しました( 問題#52参照)。

v2.3.1(2015-04-30)

  • うまくいけば、TinyDBをsetup.pyスクリプトの依存関係として使うことで問題を解決することができます( 問題#51を参照)。

v2.3.0(2015-04-08)

  • カスタムシリアル化のサポートが追加されました。 こうすることで、TinyDBにdatetimeオブジェクトをJSONファイルに格納するように教えることができます:)( 問題#48プルリクエスト#50参照
  • すべての検索で検索が遅くなったときのパフォーマンスの低下を修正しました( 問題49を参照)
  • 内部コードがクリーンアップされました

v2.2.2(2015-02-12)

  • CachingMiddleware一緒にJSONStorageを使用する際のデータ損失を修正しJSONStorage問題#47参照)

v2.2.1(2015-01-09)

  • 整数を文字列に変換したJSONバックエンドでのIDの処理を修正しました( 問題#45を参照)

v2.2.0(2014-11-10)

v2.1.0(2014-10-14)

  • where(...).contains(regex)追加しましwhere(...).contains(regex) 問題#32参照)
  • データベースを再オープンした後にデータが破損するバグを修正しました( 問題#34参照)

v2.0.1(2014-09-22)

  • Python 2でのUnicodeデータの扱いを修正しました( 問題#28参照)。

v2.0.0(2014-09-05)

アップグレードノート

警告: TinyDBは、データの格納方法を変更しました。 新しいスキームにデータベースを移行する必要があるかもしれません。 詳細はアップグレードノートを参照してください。

v1.4.0(2014-07-22)

  • insert_multiple関数を追加しました( 問題#8を参照)。

v1.3.0(2014-07-02)

  • バグ#7 :IDが一意でないバグを修正
  • APIを拡張しましたdb.count(where(...))db.contains(where(...))
  • query in dbの構文query in db非推奨になり、 db.contains置き換えられdb.contains

v1.2.0(2014-06-19)

v1.1.1(2014-06-14)

  • Merged PR#5 :マイナーな文書の誤植やスタイルの問題を修正しました。

v1.1.0(2014-05-06)

  • ドキュメントを改善し、いくつかのタイプミスを修正しました。
  • 内部コードをリファクタリングしました。
  • 複数のTinyDB?バグを修正しTinyDB? インスタンス。

v1.0.1(2014-04-26)

  • エントリを削除するときにデータベースを壊したJSONStorageバグを修正しJSONStorageた。

v1.0.0(2013-07-20)

  • 最初の正式リリース – TinyDBは現在安定していると考えてください。







-msiemens
-, , , ,

執筆者: