终极MongoDB对象文档映射器
项目描述
比minimongo更快,比micromongo更轻,欢迎picomongo,这是Dailymotion制作的终极Mongo ODM。
入门
要开始使用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://’
数据库: ‘test’
集合: 你的文档类名的小写形式
你可以访问这些值,它们是传统的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'
但自动配置是在什么时候完成的?一旦你尝试访问它们。
配置集合
你可以配置你的文档将保存到哪个集合。如果你想配置它,可以在自定义Document类中覆盖collection_name。例如
>>> 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,具体请参阅本页文档:[https://mongodb.ac.cn/display/DOCS/Connections](https://mongodb.ac.cn/display/DOCS/Connections)
配置中不需要任何内容,picomongo将使用一些规则来计算最终配置
- 默认配置
如果uri不存在,则使用‘mongodb://’
如果db不存在,则使用‘test’
- 在文档配置中
如果uri不存在,则使用默认uri
如果db不存在,则使用默认db
如果col未设置,则使用文档类名
您可以使用以下语法访问配置
>>> ConnectionManager.get_config('_default_') # Access default configuration >>> ConnectionManager.get_config('document') # Access configuration for document named 'document'
以下是配置的一些示例
更改默认db
>>> 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实例)。
项目详情
picomongo-0.6.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 39c039698a6b95cb7e27e4af506b413f64f546a1cb2945021d1dd5d81635a2c6 |
|
MD5 | c2c34d05b0f894873cc77109844a01ac |
|
BLAKE2b-256 | 1268d9b3c47c6217c710b5b4f1c1a0f744e06fb85bb4b2feb26ac888fd030dcb |