皮蒙哥岛上一种非常薄的类似虫子的包装物。
mongorm的Python项目详细描述
Mongorm
mongorm是一个非常薄的odm层,位于pymongo之上 允许您创建表示MongoDB文档的类。
它旨在为您提供^ {TT2}$的所有灵活性,以及一些 方便的特性,例如属性样式(user.name)访问 领域。
开始
建议通过pip安装mongorm, pip install mongorm
mongorm只有一个类供您导入:
>>> from mongorm import Database
您可以通过mongodb uri连接到数据库:
>>> db = Database(uri='mongodb://localhost:27017/some_db')
或使用主机端口DB组合:
>>> db = Database(host='localhost', port=27017, db='some_db')
如果任何关键字参数不匹配,或者缺少uri 数据库名称,默认值如下:
- host:'本地主机'
- port:27017
- db:'测试'
数据库类
Database类有以下方法:
- authenticate:与pymongo的工作原理相同
- drop:删除数据库
- drop_collection:删除集合
- get_collections:获取数据库中集合的列表
以及以下(只读)属性:
- host:MongoDB主机
- port:MongoDB端口
- name:数据库名称
您可以使用db.__client__和 带有db.__db__的pymongo.database实例。最终,普通 可以从db对象本身访问操作。
dotdict
DotDict类是python默认dict的包装 允许属性样式访问dict键值对。换句话说, 以下访问是相同的:
>>> d = DotDict({'hello': 'world'}) >>> print d['hello'] world >>> print d.hello world
mongorm.Documents从中继承以获得此功能。如果你愿意 希望能够使用 属性样式访问,将它们声明为mongorm.DotDicts 第页,共页。
定义模型
使用配置好的数据库,如上所述,您可以将模型声明为:
class SomeClass(db.Document): pass
这些模型将从^{tt8}继承数据库连接$ 实例。
下面演示^{tt26}的一些特性$ 上课。
from mongorm import Field class User(db.Model): # Override the collection name # Defaults to the underscored version of the class name __collection__ = 'auth_user' # Enforce validation on certain fields # All fields in this dict are considered required __fields__ = { # user.username is a required field of type str, without a default 'username': Field.required(str), # user.age is a required field, with a default value 'age': Field.required(int, 12) # user.name is an optional field 'name': Field.optional(str), # Nested document 'nested': { 'key_a': Field.required(str), 'key_b': Field.optional(int) } # List. Note that list elements are ALWAYS treated as optional 'a_list': [ Field.optional(int) ] # List of objects 'b_list' = [ { 'key_a': Field.required(str), 'key_b': Field.optional(int) } ] } # Specify indices # These are directly passed to pymongo's collection.ensure_index __indices__ = [ # Normal index over name field Index('name'), # Descending index over age Index([('age': pymongo.DESCENDING)]), # Compound index Index([('age', pymongo.DESCENDING), ('name', pymongo.ASCENDING)]), ] # Override the validate function # This gets called before a save operation # Error conditions should throw exceptions def validate(self): if self.age < 18: raise CannotLegallyDrinkError
Document类还有一些有用的/基本的方法:
- dump_dict:返回一个dict,其中的键具有驼峰格式的名称
- dump_json:将上述dict转储为json
- load_dict:从dict更新self;它将所有键转换为 带下划线的名称
- load_json:将json解组到dict中执行上述操作 操作
- save:保存文档
- delete:从集合中删除文档
- validate_fields_extra:根据dict验证字段 进来了。dict使用与上面字段相同的格式。这个 方法可用于使某些字段仅在特定的 情况。
以及下面的@classmethods:
- from_json:返回用 输入json
- find:调用pymongo.collection'sfind
- find_one:调用pymongo.collection'sfind_one
此外,以下方法将传递给 pymongo.collection实例:
- aggregate
- count
- create_index
- ensure_index
- drop_index
- drop_indexes
- index_information
- reindex
- group
- distinct
- write_concern
- find_and_modify
任何参数都逐字传递给pymongo.collection 请参阅pymongos文档。
贡献
所有的发展都发生在 GitHub。请随时报告 有问题。
如果您想贡献代码,请注意以下几点:
- 该项目是bsd许可的,不是copyleft
- 请关闭master分支,不要发布任何其他 可能存在 的分支
- 确保遵循惯例
- 胃肠道thub pull请求很好,补丁也可以通过电子邮件发送到r@hul.ag