Pymongo数据建模库
pymongo-document-modeling的Python项目详细描述
Pymongo文档建模
创建由pymongo支持的数据模型,名为:document 多态性和遗传能力。
功能
本文档建模库以面向对象设计为目标。因此它 可以关联字段,并将其继承到其子类。
安装
从安装开始
>pipinstallpymongo-document-modeling
配置
一旦安装了pymongo文档建模模块。现在你 可以开始配置您的pymongo。要声明配置文件,请先准备配置。
下面是配置文件的脏示例。
[default]connection_string=mongodb://localhost:27017/database_name=test_beds[test_data_pool]connection_string=mongodb://localhost:27017/database_name=test_data_pool
更多的案子。实际上,可以根据需要指定多个连接节 (但需要 默认值 节)。
现在让系统知道您的配置文件在哪里。为此,调用conf.update_config() 在您申报头等舱之前。
frompymongo_documentimportconf# example a - specify the fileconf.update_config('conf/my-config.ini')# read config from os.path.getcwd() + 'conf/my-config.ini'# example b - specify directory (default config file name will be assumed).conf.update_config('conf/')# read config from os.path.getcwd() + 'conf/pymongo-connectors.ini'
最后,在模型中,可以引用此连接器名称。如果省略,将使用默认值。 (参见快速入门部分的第一个示例 meta 类)。
注意 如果从未调用conf.update_config(),则将假定此默认配置。
[default]connection_string=mongodb://localhost:27017/database_name=default_database
快速启动
以身作则是最简单、最快的。这里有一些又快又脏的 简单的课堂示例。
frompymongo_documentimportdocumentsasdoc# Import library module as "doc"classSimpleDocument(doc.Doc):int_val=doc.FieldNumeric()str_val=doc.FieldString(default="default_value_of_string")classMeta:collection_name="simple_document"# Special class to annotate the document name to be saved.connection_name="test_data_pool"# Explicitly state connection_name, (If omitted, 'default' will be used)
加载和保存与django的模型一样简单。
d=SimpleDocument()d.int_val=500d.save()# document is saved to your mongodbloaded=SimpleDocument(d.object_id)printd.int_val# 500printd.str_Val# default_value_of_stringprintd.object_id# auto generated bson.ObjectId
对于更复杂的类,可以从现有类继承,重写 现有字段。
classABitComplexDocument(SimpleDocument):# Extend existing modelint_val_2=doc.FieldNumeric(none=False)# Add new fieldstr_val=doc.FieldString(default="default_value_changed")# Override existing model's fieldclassMeta:collection_name=":complex_1"# use ':' to annotate the system to let this data model shared parent's collection
Mongo没有join,但是我们可以在 收集。我们通过将它们嵌套在文档列表中来实现这一点。
classHolderOfSimpleDocuments(doc.Doc):list_of_docs=doc.FieldList(doc.FieldDoc(SimpleDocument))classMeta:collection_name="document_holders"
还有更多类型的例子,请参见 以下文档。