类orm对象映射的mongodb接口(支持挂架)

mongokit-pylons的Python项目详细描述


=========================
此软件包已弃用
========================= < BR>
此包中的所有更改都已合并回原始包中
项目,Mongokit…因此,最有理由反对
Mongokit塔架。自合并以来,Mongokit增加了
附加功能。我正在做一个桥梁版本来帮助
迁移,但现在您应该考虑迁移到主
项目。 < BR>< BR>
=========================
什么是mongodb/mongokit?
=========================
MongoDB是一个免费的、开源的、面向无模式文档的
数据库(可从http://mongodb.org获得)。蒙哥特
框架是一个类似于orm的层,它提供了增强的
通过提供一个对象来管理MongoDB数据的方法
层。此层允许您定义粗略的架构大纲
包括默认值和允许的和必需的字段。
虽然无模式数据库缺乏模式,
它有助于控制哪些字段是不允许的
(即使您最多只使用10次中的3次)以确保一致性。 < BR>
原始mongokit由namlook编写,可在
http://bitbucket.org/namlook/mongokit/ < BR>
Mongokit Pylons是一个(希望是临时的)分叉,它提供了
用于在Pylons Web中轻松集成Mongokit的工具集
框架。它提供了解析mongo配置的能力
从pylons ini配置文件,并在
config/environment.py作为始终可用的threadlocal
连接池(类似于通常在挂架中设置sqlalchemy的方式)。 < BR>
从我自己使用mongokit后集成
挂架支持我的生产系统,我添加了几个
对Mongokit Pylons Fork的增强,我发现它很有用。
这些特性包括
值(而不是纯字典访问)和对
MongoDB驱动程序的自动参考功能。自参考
允许您将mongokit对象/实例嵌入到另一个
Mongokit对象。启用自动引用后,mongokit和
pymongo驱动程序将转换嵌入的mongokit对象
值到内部mongodb dbrefs。(反)序列化是
由pymongo驱动程序自动处理。 < BR>
我希望/打算把这个叉子合并回主叉子
项目。 < BR>
===============
Mongokit塔架
===============
[请注意,如果您使用此叉子的早期版本,则
最近将名称空间更改为mongokit.pylons,以便
冲突。最新版本可以从pypi中获取] < BR>
_发布:http://pypi.python.org/pypi/mongokit-pylons
_ pypi:http://pypi.python.org/pypi/mongokit-pylons < BR>
这是一个叉子(希望是暂时的,因为我想合并到
一个代码库)添加更好的支持
对于塔架。在此过程中,我添加了一些特性,如
设置/获取属性值
而不是和字典说话。 < BR>
此分叉还支持
皮蒙戈。驱动程序。 < BR>
mongopylonsenv是在
塔架。-建议的部署是将调用添加到
config/environment.py中的init_mongo()用于您的Pylons项目。
就像使用sqlalchemy一样,这将设置您的连接
在Pylons启动时,MongoDB池代码应该确保
足够的连接。 < BR>
_ Mongokit:http://bitbucket.org/namlook/mongokit/wiki/home
_挂架:http://pylonshq.com
_炼金术:http://sqlalchemy.org
_ pymongo:http://github.com/mongodb/mongo-python-driver/
_自动引用示例:http:。//github.com/mongodb/mongo-python-
驱动程序/blob/cd47b2475fe567e98696e6bc5af3c402891d12/示例/自动
参考.py < BR>
在顶部添加导入: < BR>
>>>>来自mongokit.pylons.pylons_env import mongopylonsenv < BR>
在加载环境中降低: < BR>
>;>gt;mongopylonsenv.init\u mongo() < BR>
此外,您还需要在
配置ini文件: < BR>< BR>
>;>;Mongo数据库设置
mongodb.host=本地主机
mongodb.port=27017
…mongodb.db=您的数据库名称
…mongodb.connection_超时=30
…mongodb.pool.enable=true
…mongodb.pool.size=20个 < BR>
要启用挂架支持,您的文档类必须指定: < BR>
>>>使用挂架=正确 < BR>
作为类级属性。Mongokit的文档连接
管理是基于类的,因此如果您需要相同的文档
进出塔架,建议您创建
"正常"蒙古文子类,以及
定义索塔。 < BR>
或者,对于懒惰的终极目标: < BR>
>>>>来自mongokit.pylons.document导入mongopylonsdocument < BR>
然后从中派生子类(它是
可使用挂架的Mongoodocument)。 < BR>
这个版本的另一个优点是自动引用。
自动引用允许您将其他mongodocuments作为值传递。
皮蒙戈。(在Mongokit的帮助下)自动
在持久化到
蒙戈。当提取时,它会将它们翻译回来,这样您就可以
引用对象的数据值。
参见自动参考样本。更多细节/内部信息
驾驶员级功能。至于让它在你自己的
mongokit代码,只需定义以下类属性
关于您的文档子类: < BR>
>>>启用自动参考=真 < BR>
启用autoref后,Mongokit的连接管理将
将适当的bson操纵器附加到文档的
连接句柄。我们要求您显式启用autoref
有两个原因: < BR>
-使用autoref和它的bson操纵器(以及dbrefs)附带
性能损失,因此除非您选择在类级别加入,否则我们不会加载它们。
-在某些情况下,您可能不希望使用自动引用
使用dbrefs。 < BR>
一旦启用了autoref,mongokit将允许您定义
作为文档一部分的任何有效Mongodocument子类
结构。**如果您的类未将"启用自动引用"定义为
没错,Mongokit的结构验证代码将拒绝
结构。规则是*autoref enabled*,*issubclass(<;type>;,
混合气味)*.** < BR>
一个详细的例子: < BR>
>;>>类blogEntry(mongopylonsdocument):
…collection_name='博客'
…结构={
…作者:adminuser,
…发布日期:datetime.datetime,
…标题:Unicode,
…条目:Unicode,
…}

…_启用自动参考=真
…必需的_字段=['author','publish_date','entry','title']
…默认值={发布日期':datetime.datetime.now()} < BR>
另外,有了这个代码库,mongodocument支持属性
样式集/获取。在最初的代码库中,您必须执行以下操作: < BR>
>;>;用户=测试用户文档()
…用户['password']='p455' < BR>
使用此代码,您可以将其调用为: < BR>
>;>;用户=测试用户文档()
…user.password=第455页 < BR>
关于这个叉子的任何问题,特别是塔架安培和放大器;
自动参考(和属性)支持,请联系我自己(Brendan
mcadams)而不是namlook。我可以在
没有*bwmcadams*spam@gmail.*omgspam*.com,有时还会潜伏在
freenode mongodb作为bwmcadams。 < BR>
核心Mongokit的文档如下… < BR>
========
蒙古
======== < BR>
mongodb是一个很棒的无模式的面向文档的数据库。它有很多 < BR> >许多语言(Python、Ruby、Perl、Java、PHP…)的驱动程序。 < BR>
_ MongoDB:http://www.mongodb.org/display/docs/home < BR>
mongokit是一个python模块,它提供结构化模式和验证层
在伟大的pymongo驱动程序之上。它被写得更简单、更轻
尽可能记住接吻和干燥原则。 < BR>
功能
======== < BR>
*模式验证(声明使用简单的python类型)
*嵌套的复杂模式声明
*必需字段验证
*默认值
*自定义验证器
*继承和多态性支持
*版本化文档支持(仍处于alpha阶段)
*部分验证支持(它带来了一个简单的用户模型) < BR>
一个简单的例子
=============== < BR>
mongodocument是增强的python措辞,带有一个``validate().`` < BR>方法。
Mongododocument声明如下: < BR>
>>>>来自Mongokit.pylons导入Mongoodocument
>>gt;导入日期时间 < BR>
>;>>类博客文章(Mongodocument):
…数据库名称='测试'
…集合名称='教程'
…结构={
…标题:Unicode,
…正文:Unicode,
…作者:Unicode,
…创建日期:datetime.datetime,
…秩:int
…}
…必需的_字段=['title','author','date_creation']
…默认值={'rank':0,'日期创建':datetime.datetime.utcnow}

>>>blogpost=blogpost()
>>>博客帖子["标题"]=U"我的标题"
>>>博客帖子["body"]=u'a body'
>;>;博客文章["作者"]=u'me'
>;>;blogpost.validate()
>>>blogpost"doctest:+省略号,+规范化空白"
{body':u'a body','title':u'my title','date\u creation':datetime.datetime(…),
"排名":0,"作者":u'me}
>;>;blogpost.save() < BR>
您可以使用更复杂的结构: < BR>
>>>>类复合文档:
…数据库名称='测试'
…集合名称='教程'
…结构={
…foo:{"内容":int},
…酒吧:{
…int:{unicode:int}
…}
…}
…必需的_字段=['foo.content','bar.int'] < BR>
有关更多示例,请参见教程。 < BR>
_教程:http://bitbucket.org/namlook/mongokit/wiki/home < BR>
[有关此分叉的任何问题,特别是塔架和自动参考(以及
属性)支持,而不是核心mongokit代码,请联系我自己
(布伦丹·麦克亚当斯)而不是南望。我可以在
没有*bwmcadams*spam@gmail.*omgspam*.com,有时还会潜伏在
作为bwmcadams的freenode mongodb。]

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

推荐PyPI第三方库


热门话题
我们应该在测试java代码时模拟黄瓜测试吗。我们应该在多大程度上使用黄瓜?   Hibernate Weblogic 10.3.4 java。lang.NoSuchMethodError:javax/persistence/spi/PersistenceUnitInfo。getValidationMode()Ljavax/persistence/ValidationMode;   java如何在main()中访问私有静态实例变量   java JMockit无法模拟类的公共final字段   java是否可以返回特定控制器操作的输出(html)?   java如何返回正确类型的列表?   rest-OpenUI/Swagger-java-to-API   java组织。springframework。豆。工厂NoSuchBeanDefinitionException或加载ApplicationContext失败   java使用POST将参数从JSP发送到Servlet   java如何监听特定的按钮按下和主视图用户交互?   java如何让gradle在本地maven repo中覆盖库?   如何在Java中“合并”两个URI?   java如何制作一个方法来移动数组中的字符?   使用来自java的命令启动powershell窗口   java垃圾收集器和匿名类   java如何为CellTable(GWT 2.4)中的ImageResourceCell创建PanelPopup?