python mongodb工具包
mongokit的Python项目详细描述
#Mongokit[![构建状态](https://travis ci.org/namlook/mongokit.png)(https://travis ci.org/namlook/mongokit.png)
[mongodb](http://www.mongodb.org/display/docs/home)是一个很棒的无模式文档导向数据库。它有许多用于多种语言(python、ruby、perl、java、php……)的驱动程序。
mongokit是一个python模块,它在伟大的pymongo驱动程序之上提供了一个结构化的模式和验证层。它已经被写得尽可能简单和轻巧,并考虑了接吻和干巴巴的原则。
*真正的*需要快速,您可以在不更改api的情况下访问原始pymongo层**功能强大**:
*mongokit提供了许多功能,如文档自动引用、自定义类型或
i18n支持。
**您的数据是干净的:**
>;"工具更改,而不是数据"。为了遵循这个"信条",Mongokit不会将任何信息添加到保存在数据库中的数据中。
>;因此,如果需要使用其他Mongo工具或其他语言的ODM,您的
>;Mongokit的东西不会污染数据。
验证
*默认值
*自定义验证器
*跨数据库文档引用
*随机查询支持(从数据库返回随机文档)
*继承和多态支持
*版本化文档支持(在beta阶段)
*部分验证支持(它带来了一个简单的用户模型)
*用于验证的运算符(当前:或,not和is)
*简单的web框架集成
*导入/导出到json
*i18n支持
*gridfs支持
*文档迁移支持
>转到完整的[文档](http://github.com/namlook/mongokit/wiki)
使用"validate()"方法的python字典。
文档声明如下:
``python
>;>from mongokit import*
>;>import datetime
>;>connection=connection()
>;@connection.register
…类blogpost(文档):
…结构={
…'标题:Unicode,
…正文:Unicode,
…作者:unicode,
…创建日期:datetime.datetime,
…等级:int
…}
…必需字段=['title','author','date\u creation']
…默认值={'rank':0,'日期创建':datetime.datetime.utcnow}
…
`````
>我们建立连接并注册我们的对象。
``python
>;blogpost=con.test.example.blogpost();这使用数据库"test"和集合"example"
>;blogpost['title']=u'my title'
>;>;blogpost['body']=u'a body'
>;>;blogpost['author']=u'me'
>;>;blogpost
{'body':u'a body','title':u'my title','date\creation':datetime.datetime(…),'rank':0,'author':u'me'}
>;>;blogpost.save()
```
保存对象将调用"validate()"方法。
类complexdoc(文档):
…_数据库"测试"
…_集合"示例"
…结构={
…foo:{"内容":int},
…bar:"{
…"bla':{'spam':int}
…}
…}
…必选字段=['foo.content','bar.bla.spam']
````
orial)(https://github.com/namlook/mongokit/wiki/tutorial)了解更多示例。
如果您在文档中发现错误,请随时与我联系。你可以在自由节点MongoDB IRC频道或Twitter(http://twtwitter.com/namlook)上找到我(namlook)
最近的更改日志
www www www.9.1.1
*修复崩溃的pip安装清单中的错误,修复崩溃的pip安装清单中的错误。
*已修复131-使用PEP8建议import
*修复了测试(感谢@johnbrodie和@bneron)
*添加了用于在venv中运行测试的makefile(感谢@gulbinas)
*修复了pep8错误(感谢@gulbinas)
*添加了对mongorelicasetclient的支持(感谢@inabhi9)
*添加了"getstate"和"uu setstate"doteddict和i18ndoteddict。由于明显缺乏这些功能,在对Mongokit文档进行酸洗时出现了一些问题。(感谢@petersng)
*修复了文档中的英文错误和拼写错误(感谢@biow0lf,@seyz,@gianpaj和@1123)
*修复了按索引访问游标时继承的查询(感谢@asivokon)
*更改了架构文档错误时的命名空间(感谢@rtjoseph11)
v0.9.0
*现在mongokit需要pymongo>;=2.5
*如果查询失败(感谢@a1gucis)
*在schemadocument上修复一个错误(感谢@john brodie)
*修复继承的查询(问题106)(感谢@effm git)
*通过类型验证修复嵌套结构的序列化(感谢@LK4D4)
*删除to json中不必要的路径参数。*使用多重继承实现大重构(感谢@liyanchang)
*添加find_fulltext方法以方便使用(感谢@astronouth7303)(非官方和尚未记录)
*允许在文档定义中使用文本索引(感谢@astronouth7303)
*添加副本集支持(感谢@liyanchang)
*修复自述文件中的错误(感谢@girasquid)
*添加分页帮助程序(尚未记录)(感谢@jarrodb)https://github.com/namlook/mongokit/blob/master/mongokit/paginator.py
\v0.8.3
*允许在连接中设置关键字参数(如read_u preferences、slave_u okay等)(感谢@petersng)
*添加find_u并再次修改。它已被意外回滚删除。
*将MongoClient与MasterSlaveConnection结合使用
\v0.8.2
*fix-101-验证器条件修复
*fix-110-支持PyMongo>;=2.4(导入MongoClient)--感谢@mattbodman和@zavatskiy
*修复了一些拼写/语法错误(感谢@gekitsuu)
apavlo/master)
*修复了在validate()中抛出maxdocumentsizerror时出现的错误(感谢andy pavlo)
*添加了无条件访问"包装"游标的修复程序(感谢david t.lehmann)
*添加了未定义"包装"游标上"获取项目"的测试(感谢david t.Lehmann)
*``uu getitem` on unwrapped cursor检查``uu wrapp`是否为none(来自dtl的merge pull request/fix getitem on unwrapped cursor)
*为travis ci添加.travis.yml(http://travis-ci.org/)(来自msabramo/travis的merge pull request/96)
*修复了docs(来自d0ugal/master的merge pull request 95)
*修复了文档中的呈现问题。(多亏了Dougal Matthews)
*调整了缺失和未知字段验证中的错误消息,以帮助调试项目(多亏了Phillip B Oldham)
\v0.8.0
*为基于RPM的发行版添加规范文件(来自LinuxNow/Master的合并拉取请求63)
*更改文档库MongoDB 1.8或更高版本的ent大小限制。感谢aleksey sivokon(merge pull request 74 from key/master)
*对int的""验证(merge pull request 79 from barnybug/master)
*修复加载缺少自定义类型字段的文档时出现的异常(merge pull request 80 from barnybug/master)
*大型文档由Sean Lynch进行的重组(来自Sean Lynch/Master的合并拉取请求82)
*使用重命名不再导致迁移引发异常(来自Matthewh/Master的合并拉取请求86)
*某些测试被修改并添加了tox(来自Aircastle/Modifiytest的合并拉取请求91)
*将pymongo.objectid替换为bson.objectid(merge pull request 88 from behackett/master)
*添加了对创建索引的其他关键字参数的支持(merge pull request 85 from mfelsche/master)
*删除任何json依赖项并使用内置json所有的补丁!
\v0.7.2
*添加继承查询支持(有关详细信息,请参见http://github.com/namlook/mongokit/wiki/inherited-querys)
\v0.7.1
*将mongokit masterslaveconnection更改为masterslaveconnection以保持一致性
*修复57——支持pymongo>;1.9 in grid.py
*fix 45--删除自动索引创建
*fix 43--切片光标应返回mongokit文档,而不是dict
*不要尝试将none struct转换为json(请从@mlewislogic进行修补,谢谢!)
*修复无模式问题(感谢Mihai Pocorschi的报告)
v0.7
*添加"使用无模式"功能!有关详细信息,请参阅文档
*为mongokit运算符添加相等测试(感谢@allancaffee)
这允许开发人员在使用运算符时对其文档类的结构编写单元测试(这需要pymongo 1.10)
*许多文档修复了
*fix 55——versioneddocument remove()方法中的错误
*fix 53——修复了readme中的一些拼写错误
*fix 52——高级批量迁移文档示例被破坏了
*fix 51——pymongo.dbref被弃用,使用bson.dbref代替
*fix 49--不能为嵌入对象列表指定默认值
*fix 48--uuid.uuid支持
*fix 41--将基字符串添加到授权类型
*fix 40--做了一些增强documents
*fix 34—在document
*fix 32中添加find _和modify方法—允许结构为空(was:document.to json())
*fix 24—不处理虚拟文档的"数据库"和"集合"属性
[mongodb](http://www.mongodb.org/display/docs/home)是一个很棒的无模式文档导向数据库。它有许多用于多种语言(python、ruby、perl、java、php……)的驱动程序。
mongokit是一个python模块,它在伟大的pymongo驱动程序之上提供了一个结构化的模式和验证层。它已经被写得尽可能简单和轻巧,并考虑了接吻和干巴巴的原则。
*真正的*需要快速,您可以在不更改api的情况下访问原始pymongo层**功能强大**:
*mongokit提供了许多功能,如文档自动引用、自定义类型或
i18n支持。
**您的数据是干净的:**
>;"工具更改,而不是数据"。为了遵循这个"信条",Mongokit不会将任何信息添加到保存在数据库中的数据中。
>;因此,如果需要使用其他Mongo工具或其他语言的ODM,您的
>;Mongokit的东西不会污染数据。
验证
*默认值
*自定义验证器
*跨数据库文档引用
*随机查询支持(从数据库返回随机文档)
*继承和多态支持
*版本化文档支持(在beta阶段)
*部分验证支持(它带来了一个简单的用户模型)
*用于验证的运算符(当前:或,not和is)
*简单的web框架集成
*导入/导出到json
*i18n支持
*gridfs支持
*文档迁移支持
>转到完整的[文档](http://github.com/namlook/mongokit/wiki)
使用"validate()"方法的python字典。
文档声明如下:
``python
>;>from mongokit import*
>;>import datetime
>;>connection=connection()
>;@connection.register
…类blogpost(文档):
…结构={
…'标题:Unicode,
…正文:Unicode,
…作者:unicode,
…创建日期:datetime.datetime,
…等级:int
…}
…必需字段=['title','author','date\u creation']
…默认值={'rank':0,'日期创建':datetime.datetime.utcnow}
…
`````
>我们建立连接并注册我们的对象。
``python
>;blogpost=con.test.example.blogpost();这使用数据库"test"和集合"example"
>;blogpost['title']=u'my title'
>;>;blogpost['body']=u'a body'
>;>;blogpost['author']=u'me'
>;>;blogpost
{'body':u'a body','title':u'my title','date\creation':datetime.datetime(…),'rank':0,'author':u'me'}
>;>;blogpost.save()
```
保存对象将调用"validate()"方法。
类complexdoc(文档):
…_数据库"测试"
…_集合"示例"
…结构={
…foo:{"内容":int},
…bar:"{
…"bla':{'spam':int}
…}
…}
…必选字段=['foo.content','bar.bla.spam']
````
orial)(https://github.com/namlook/mongokit/wiki/tutorial)了解更多示例。
如果您在文档中发现错误,请随时与我联系。你可以在自由节点MongoDB IRC频道或Twitter(http://twtwitter.com/namlook)上找到我(namlook)
最近的更改日志
www www www.9.1.1
*修复崩溃的pip安装清单中的错误,修复崩溃的pip安装清单中的错误。
*已修复131-使用PEP8建议import
*修复了测试(感谢@johnbrodie和@bneron)
*添加了用于在venv中运行测试的makefile(感谢@gulbinas)
*修复了pep8错误(感谢@gulbinas)
*添加了对mongorelicasetclient的支持(感谢@inabhi9)
*添加了"getstate"和"uu setstate"doteddict和i18ndoteddict。由于明显缺乏这些功能,在对Mongokit文档进行酸洗时出现了一些问题。(感谢@petersng)
*修复了文档中的英文错误和拼写错误(感谢@biow0lf,@seyz,@gianpaj和@1123)
*修复了按索引访问游标时继承的查询(感谢@asivokon)
*更改了架构文档错误时的命名空间(感谢@rtjoseph11)
v0.9.0
*现在mongokit需要pymongo>;=2.5
*如果查询失败(感谢@a1gucis)
*在schemadocument上修复一个错误(感谢@john brodie)
*修复继承的查询(问题106)(感谢@effm git)
*通过类型验证修复嵌套结构的序列化(感谢@LK4D4)
*删除to json中不必要的路径参数。*使用多重继承实现大重构(感谢@liyanchang)
*添加find_fulltext方法以方便使用(感谢@astronouth7303)(非官方和尚未记录)
*允许在文档定义中使用文本索引(感谢@astronouth7303)
*添加副本集支持(感谢@liyanchang)
*修复自述文件中的错误(感谢@girasquid)
*添加分页帮助程序(尚未记录)(感谢@jarrodb)https://github.com/namlook/mongokit/blob/master/mongokit/paginator.py
\v0.8.3
*允许在连接中设置关键字参数(如read_u preferences、slave_u okay等)(感谢@petersng)
*添加find_u并再次修改。它已被意外回滚删除。
*将MongoClient与MasterSlaveConnection结合使用
\v0.8.2
*fix-101-验证器条件修复
*fix-110-支持PyMongo>;=2.4(导入MongoClient)--感谢@mattbodman和@zavatskiy
*修复了一些拼写/语法错误(感谢@gekitsuu)
apavlo/master)
*修复了在validate()中抛出maxdocumentsizerror时出现的错误(感谢andy pavlo)
*添加了无条件访问"包装"游标的修复程序(感谢david t.lehmann)
*添加了未定义"包装"游标上"获取项目"的测试(感谢david t.Lehmann)
*``uu getitem` on unwrapped cursor检查``uu wrapp`是否为none(来自dtl的merge pull request/fix getitem on unwrapped cursor)
*为travis ci添加.travis.yml(http://travis-ci.org/)(来自msabramo/travis的merge pull request/96)
*修复了docs(来自d0ugal/master的merge pull request 95)
*修复了文档中的呈现问题。(多亏了Dougal Matthews)
*调整了缺失和未知字段验证中的错误消息,以帮助调试项目(多亏了Phillip B Oldham)
\v0.8.0
*为基于RPM的发行版添加规范文件(来自LinuxNow/Master的合并拉取请求63)
*更改文档库MongoDB 1.8或更高版本的ent大小限制。感谢aleksey sivokon(merge pull request 74 from key/master)
*对int的""验证(merge pull request 79 from barnybug/master)
*修复加载缺少自定义类型字段的文档时出现的异常(merge pull request 80 from barnybug/master)
*大型文档由Sean Lynch进行的重组(来自Sean Lynch/Master的合并拉取请求82)
*使用重命名不再导致迁移引发异常(来自Matthewh/Master的合并拉取请求86)
*某些测试被修改并添加了tox(来自Aircastle/Modifiytest的合并拉取请求91)
*将pymongo.objectid替换为bson.objectid(merge pull request 88 from behackett/master)
*添加了对创建索引的其他关键字参数的支持(merge pull request 85 from mfelsche/master)
*删除任何json依赖项并使用内置json所有的补丁!
\v0.7.2
*添加继承查询支持(有关详细信息,请参见http://github.com/namlook/mongokit/wiki/inherited-querys)
\v0.7.1
*将mongokit masterslaveconnection更改为masterslaveconnection以保持一致性
*修复57——支持pymongo>;1.9 in grid.py
*fix 45--删除自动索引创建
*fix 43--切片光标应返回mongokit文档,而不是dict
*不要尝试将none struct转换为json(请从@mlewislogic进行修补,谢谢!)
*修复无模式问题(感谢Mihai Pocorschi的报告)
v0.7
*添加"使用无模式"功能!有关详细信息,请参阅文档
*为mongokit运算符添加相等测试(感谢@allancaffee)
这允许开发人员在使用运算符时对其文档类的结构编写单元测试(这需要pymongo 1.10)
*许多文档修复了
*fix 55——versioneddocument remove()方法中的错误
*fix 53——修复了readme中的一些拼写错误
*fix 52——高级批量迁移文档示例被破坏了
*fix 51——pymongo.dbref被弃用,使用bson.dbref代替
*fix 49--不能为嵌入对象列表指定默认值
*fix 48--uuid.uuid支持
*fix 41--将基字符串添加到授权类型
*fix 40--做了一些增强documents
*fix 34—在document
*fix 32中添加find _和modify方法—允许结构为空(was:document.to json())
*fix 24—不处理虚拟文档的"数据库"和"集合"属性