デフォルトではcollection.find
またはcollection.findone()
の関数は辞書型になり、パラメータの型をas_class=SomeUserClass
に渡すと、結果をこのクラス形式に解析しようとします。 でも、このクラスは辞書の派生クラスである必要があります(__setitem__
関数が定義され、クラスにキーを追加する必要があります)。 ここではクラスのプロパティを設定します。どのように私はこれを達成することができますか? また、私のコレクションクラスには、いくつかの子クラスがプロパティとして含まれています。どのようにして子クラスのプロパティも設定できます。PYMongo:構文解析|コレクションのクエリ出力をシリアライズ
0
A
答えて
0
私はクラスで__setitem__
を追加することでこれを解決してきました。私は
result = as_class()
for key,value in dict_expr.items():
result.__setitem__(key,value)
と私のクラスで__setitem__
を行うよりも は、カスタムを使用していたので、もし
def __setitem__(self,key,value):
try:
attr = getattr(class_obj,key)
if(attr!=None):
if(isinstance(value,dict)):
for child_key,child_value in value.items():
attr.__setitem__(child_key,child_value)
setattr(class_obj,key,attr)
else:
setattr(class_obj,key,value)
except AttributeError:
pass
0
オブジェクトリレーショナルマッパーのようなものがほしいと思うようです。私はMingという1人の主著者ですが、Pythonの他にもいくつか存在しています。明では、あなたのマッピングを設定するには、次の行う可能性があります:
from ming import schema, Field
from ming.orm import (mapper, Mapper, RelationProperty,
ForeignIdProperty)
WikiDoc = collection(‘wiki_page', session,
Field('_id', schema.ObjectId()),
Field('title', str, index=True),
Field('text', str))
CommentDoc = collection(‘comment', session,
Field('_id', schema.ObjectId()),
Field('page_id', schema.ObjectId(), index=True),
Field('text', str))
class WikiPage(object): pass
class Comment(object): pass
ormsession.mapper(WikiPage, WikiDoc, properties=dict(
comments=RelationProperty('WikiComment')))
ormsession.mapper(Comment, CommentDoc, properties=dict(
page_id=ForeignIdProperty('WikiPage'),
page=RelationProperty('WikiPage')))
Mapper.compile_all()
次にあなたが経由して、いくつかの特定のページを照会することができます:私はPythonでMongoDBのための知っている様々なODM企業が記載されています
pg = WikiPage.query.get(title='MyPage')
pg.comments # loads comments via a second query from MongoDB
以下。
関連する問題
- 1. 出力構文解析ツリーからテキストを抽出する
- 2. 出力を変数に構文解析する
- 3. Hudsonの構文解析されたコンソール出力エラー
- 4. Vala - 構文解析
- 5. 'cat'出力の色分解ルビー構文
- 6. 構文解析場所の文字列 - MySQLクエリ
- 7. JSsonの構文解析エラー
- 8. TLSハンドシェイクメッセージの構文解析
- 9. 構文解析の引数
- 10. javaバイナリメッセージの構文解析
- 11. Pythonの構文解析
- 12. MS Roslynの構文解析
- 13. テキストファイルの構文解析
- 14. JSONの構文解析
- 15. XMLの構文解析、ios5
- 16. matchesKeyInQueryの構文解析バグ
- 17. Cの構文解析エラー
- 18. RSSフィードの構文解析
- 19. 構文解析のヒント
- 20. Node.js構文解析のHTML
- 21. Apple JSONの構文解析
- 22. 構文解析エラー:構文エラー
- 23. プロローグの解析出力
- 24. 構文解析結果からの文法規則抽出
- 25. 構文解析エラーT_CLASS
- 26. Javaテキストエディタ/構文解析フレームワーク
- 27. JQueryMobile - AJAX - JSON構文解析
- 28. libxml-ruby構文解析ヘルプ
- 29. Python subprocess.check_output構文解析エラー
- 30. Three20 + JSON構文解析
のように、私はまた、あなたは明のバリデータでフィールドの種類を設定することができることを言及する必要がありますですあなたはカスタムming.schema.SchemaItemを書くことでこれを行うことができます。 –