跳转到主要内容

终极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 (4.2 kB 查看散列)

上传时间

支持者