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—不处理虚拟文档的"数据库"和"集合"属性

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
传递Java处理类类型参数的方式的参数   java安卓中间层admob在logcat中导致大量GC_FOR_ALLOC释放消息   java Vert。x Http请求未将参数分配为配置   java中多线程的输出不正确   如何减少java本地线程的冗余   java不完全分块结果   使用OpenCv时java中的Mat数据类型不受支持错误   Java中的正则表达式不工作,而同一正则表达式在shell中工作   java如何从数组中删除元素?   JDBCJava。sql。SQLException:[Microsoft][ODBC Microsoft Access驱动程序]操作必须使用可更新的查询   java如何以对角线打印字符串变量的字符?   SonarQube 5.2的java自定义插件生成NoClassDefFoundError   macos使用Java应用程序打开浏览器选项卡