金字塔框架集成,用单独的、易于测试的代码扩展sqlalchemy orm类。

pyramid_alchem的Python项目详细描述


好的框架,比如[金字塔][]和[角度][],可以帮助开发人员编写
可测试的代码。[sqlalchemy][]是一个很好的框架。但是,让模型实例从数据库查询返回的便利性鼓励开发人员编写大型orm类,这些类可能很难测试。

这种方法的缺点是在
便利性方面的损失:分离的,默认情况下,不提供易于测试的代码,因为
数据库查询返回的模型实例的属性。

[pyramid-alchemy][]提供了一个“add-model-alchemy-method”金字塔
[configuration-directive](),它以与“add-request-method”金字塔扩展[sqlalchemy-orm][]类相同的方式扩展[sqlalchemy-orm][]类。使用这个
指令,开发人员可以编写易于测试的代码,这些代码可以作为模型实例属性方便地使用。例如,如果在金字塔应用程序中[include][]this


`` python
from.model import spam


def get_eggs(instance,source='hens',limit=9,offset=0):
“示例orm instance method,作为一个独立的函数实现。“

query=instance.query.filter_by(source=source)
return query.offset(offset).limit(limit)

def includeme(config):
config.add_model_method(spam,get_eggs,“get eggs”)
```

您可以扩展实现接口的任何模型实例。
例如,如果您的模型是这样的:

``python
来自sqlalchemy.ext.declarative import declarative_base
来自zope.interfaces import implementer


from.interfaces import ifilling

base=declarative_base()

@implementer(ifilling)
类ham(base):
#…

@implementer(ifilling)
类垃圾邮件(base):

````

“get撸eggs”)
````


http://docs.sqlalchemy.org/en/latest
[金字塔炼金术]:https://github.com/thruflo/pyramd炼金术
[配置指令]:http://docs.pylonsproject.org/projects/pyramd/en/latest/narr/extconfig.html
[sqlalchemy orm]:http://docs.sqlalchemy.org/en/latest/orm
[扩展金字塔请求]:http://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html pyramid.config.configurator.add_request_method
[包含]:http://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html pyramid.config.configurator.include
[精简]:http://blog.codeculate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/

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

推荐PyPI第三方库


热门话题
java中char的用途   swing修复,以便显示可以同时显示十进制数和整数   java给定一个场景,找到拥有的JFXPanel   java JPA 2标准获取路径导航   java如何用JUnit测试这个类?   JSF中的java请求作用域   Spring云Zuul代理背后的java Spring OAuth授权服务器   java限制聚合返回的存储桶大小   java如何在安卓应用程序中请求超级su权限   防止超级关键字的java Checkstyle规则   java 安卓。应用程序。应用程序无法强制转换到安卓。应用程序。在回收器适配器中使用FragmentManager时的活动   使用Java的Twitter广告API   切换到4.0.1版本后,java“JavaMailSenderImpl无法解析为类型”   java没有getter方法可用于名称下bean的属性   java 0/1背包堆空间   java我无法使用断点进行调试   Jar文件名表单java代码   java调用从扩展活动的MainActivity类扩展片段的类片段