终极MongoDB对象文档映射器
picomongo的Python项目详细描述
比Minimongo快,比Micromongo轻,欢迎使用DailyMotion的终极Mongo ODM Picomongo。
开始
要从picomongo开始,只需导入它即可:
>>> from picomongo import Document, ConnectionManager >>> ConnectionManager.configure()
准备好了,我们定义一个文档:
>>> class UserDocument(Document): ... pass >>> user = UserDocument({'name': 'Mike'}) >>> user UserDocument({'name': 'Mike'}) >>> user.name 'Mike' >>> user.save()
你:等等,等等,我的文件在哪里?
别担心,为了方便您的工作,picomongo使用以下默认值:
- mongo uri:'mongodb://localhost'
- 数据库:“测试”
- 集合:您的文档类名(小写)
您可以访问这些值,它们是传统的pymongo对象:
>>> UserDocument.con Connection('localhost', 27017) >>> UserDocument.db Database(Connection('localhost', 27017), u'test') >>> UserDocument.col Collection(Database(Connection('localhost', 27017), u'test'), u'userdocument')
有一件事你应该永远记住,你总是需要调用configure才能保存/检索你的文档。如果要使用默认配置,只需调用不带参数的configure,否则请参见下文(部分配置时间)。
提示:您可以在声明文档之后、文档保存/检索之前调用configure。
您可以像处理传统pymongo对象那样使用它们,例如,您可以使用传统集合检索用户:
>>> UserDocument.col.find_one() {u'_id': ObjectId('4eb2cae58250f05eb4000000'), u'name': u'Mike'}
你:但是等等,为什么我要听写,我要的是一个对象。
别担心,这更简单:
>>> user2 = UserDocument.find_one() UserDocument({u'_id': ObjectId('4eb2cae58250f05eb4000000'), u'name': u'Mike'}) >>> user2.name u'Mike'
但是这个自动配置是什么时候完成的?一旦你试图接近他们。
配置集合
您可以配置将在哪个集合上保存文档。如果要配置,可以重写自定义文档类中的集合名称。示例:
>>> class CustomDocument(Document): ... collection_name = 'my_custom_collection' >>> custom = CustomDocument() >>> custom.col Collection(Database(Connection('localhost', 27017), u'test'), u'my_custom_collection')
配置时间
一旦你使用了它,让我们看看Picomongo最强大的部分,配置。
所有配置都存储在connectionmanager:
>>> from picomongo import Document, ConnectionManager
您可以通过使用配置调用configure方法来添加自己的配置。配置格式为:
{'_default_': {'uri': 'default_uri', 'db': 'default_db'}, 'document_name': {'uri': 'specific_uri', 'db': 'specific_db', 'col': 'default_col'}, 'document_name2': ...,}
uri必须是本文档页中描述的有效mongodb连接uri:http://www.mongodb.org/display/DOCS/Connections
配置中不需要任何内容,Picomongo将使用一些规则来计算最终配置:
- 在默认配置中:
- 如果不存在uri,请使用“mongodb://localhost”
- 如果数据库不存在,请使用“测试”
- 在文档配置中:
- 如果不存在uri,请使用默认uri
- 如果数据库不存在,请使用默认数据库
- 如果未预设列,请使用文档类名
您可以使用以下语法访问配置:
>>> ConnectionManager.get_config('_default_') # Access default configuration >>> ConnectionManager.get_config('document') # Access configuration for document named 'document'
下面是一些配置示例:
更改默认数据库:
>>> ConnectionManager.configure({'\_default\_': {'db': 'other_db'}}) >>> ConnectionManager.get_config('\_default\_').db Database(Connection('localhost', 27017), u'other_db')
在另一个MongoDB实例中存储一些文档:
>>> ConnectionManager.configure({'document1': {'uri': 'mongodb://127.0.0.1:8000'}}) >>> ConnectionManager.get_config('_default_').con Connection('localhost', 27017) >>> ConnectionManager.get_config('document1').con Connection('localhost', 8000)
提示:最后一个例子肯定会失败,因为picomongo在配置期间尝试连接到这个uri(而且您可能没有在这个uri上运行mongodb实例)。