默認情況下,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的主要作者,但也有其他幾個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()
然後你可以通過一些特定的頁面查詢:
pg = WikiPage.query.get(title='MyPage')
pg.comments # loads comments via a second query from MongoDB
我知道的MongoDB的Python中的各種ODM廠商上市下面。
相關問題
- 1. 序列化集合解析python
- 2. pymongo查詢沒有輸出
- 3. PyMongo關於聚合查詢
- 4. 解析Pymongo
- 5. Laravel解析嵌套的序列化查詢字符串
- 6. 查詢多個集合並對輸出進行排序
- 7. 序列化django-haystack查詢集
- 8. 序列化地理查詢集
- 9. 序列化查詢集在脫水
- 10. pymongo中的解釋(「executionStats」)的查詢
- 11. 序列化泛型集合集合
- 12. 瞭解解析器組合〜輸出
- 13. 簡化對複合輸出的規範化數據的查詢
- 14. 序列化表單輸入或查詢
- 15. 解析Django的查詢集使用AJAX
- 16. mongodb,pymongo查詢
- 17. pymongo中的更新集合
- 18. Linq查詢排序集合
- 19. LINQ查詢排序集合
- 20. 加入替代方案:在pymongo中查詢兩個集合
- 21. 美化輸出查詢
- 22. 反序列化與解析
- 23. 如何序列化集合
- 24. Gson反序列化集合
- 25. 控制集合序列化
- 26. XStream序列化集合
- 27. JMSSerializer反序列化集合
- 28. 格式化集合的輸出
- 29. Django的優化合並查詢集
- 30. found BAD_CHARACTER在聚合查詢(MongoDB/pymongo)
我還要提到的是,你可以設置一個字段的類型,你明驗證,因此,如果你想使用自定義字典對象轉換器,你可以通過編寫一個自定義的ming.schema.SchemaItem來實現。 –