Pyrantは、Tokyo CabinetのネットワークインターフェイスであるTokyo Tyrantの完全なPythonハーネスです。
Tokyo Cabinetは、最新の軽量で柔軟性のある超二重データウェアハウス( DBM )です。 最も単純なキー/値と「テーブル」、またはむしろドキュメント指向の両方を含む、いくつかのタイプのデータベースをサポートします。 後者は、東京をCouchDB、MongoDBなどの素晴らしい製品と同等のものにしますが、TC / TTははるかに単純で簡単で、したがって高速です。 さらに、文字列と数値を区別して、非常に複雑なデータクエリ( 演算子のリストを参照)をサポートします。 また、東京キャビネットでは、Luaで拡張機能を作成できます。
- PyPIとbitbucketのPyrant ( ウェルクパッチ!)
- Pyrantドキュメント
- 東京キャビネット (スライドを含む)
- 東京の暴君
Pyrantの使用例:
$ ttserver test.tct& $ python >>>ピラントをインポート >>> t = pyrant.Tyrant() >>> t.query [] >>> t ['guido'] = {'name': 'Guido'、 'age':53} >>> t ['larry'] = {'name': 'Larry'、 'age':55} >>> t.query.filter(age__gt = 53) [(u'guido '、{u'name':u'Guido '、u'age':u'53 '})] >>> t.query.filter(name__matches = '^。+ ry $') [(u'larry '、{u'name':u'Larry '、u'age':u'55 '})] >>> guys = t.query.filter(name = 'Guido')| t.query.filter(name = 'Larry') >>> guys.columns( 'age') [{u'age ':u'53'}、{u'age ':u'55'}]
ここでは、数字が文字列として格納されていることがわかります(ただし、数字で選択して並べ替えることができます)。 前述のPyModelsライブラリを使用すると、必要に応じて着信値と発信値を自動的に処理できます。また、選択結果をモデルインスタンスでラップするため、最終的にすべてが可能な限り便利になります。
>>> storage = Storage()#Pyrantを使用 >>>クラスPerson(モデル): ... name =プロパティ() ...年齢=数() ... def __unicode __(自己): ... self.nameを返します >>> q = Person.query(ストレージ).filter(name__contains = 'G') >>> guido = q [0] >>> guido <パーソン・グイド> >>> guido.age 53
_________
注:
* Pyrant + PyModelsは確かにDjango ORMの代替品ですが、特効薬はありません。 一緒に暮らしましょう。 すべてのタイプのデータベース、団結。 =)
UPD:モデルの名前がPyModelsに変更され、トピックが調整されました。