SQL Alchemy MVC和交叉控制器连接

时间:2010-05-29 04:25:06

标签: python model-view-controller sqlalchemy dns controllers

当使用SQL Alchemy抽象数据访问层并使用控制器作为从该抽象层访问对象的方式时,应该如何处理连接?

例如,假设您有一个管理Order对象的Orders控制器类,它提供了getOrder,saveOrder等方法,同样也提供了User对象的类似控制器。

首先,你甚至需要这些控制器吗?您是否应该只将SQL Alchemy视为处理数据访问的“事物”。当您使用干净的声明方式获取和持久化对象而不必直接编写SQL时,为什么还要使用面向对象的控制器。

原因之一可能是您可能希望将SQL Alchemy替换为直接SQL或Storm或其他任何东西。因此,在那里使用控制器类作为中间层有助于限制需要更改的内容。

无论如何 - 回到主要问题 - 所以假设你有这两个控制器,现在假设你想要一组符合某些标准的用户的订单列表。你是怎么做的?通常,您不希望控制器跨域 - Orders控制器只知道Orders和用户控制器只是关于用户 - 他们不会互相混淆。您也不想获取匹配的所有用户,然后将大量用户ID提供给Orders控制器以查找匹配的订单。

需要的是加入。这就是我被卡住的地方 - 这似乎意味着控制器必须跨越域或者它们应该完全消失,你只需通过SQL Alchemy直接进行连接,并根据需要获得生成的User和/或Order对象。想法?

1 个答案:

答案 0 :(得分:2)

控制器旨在为您的方便性封装功能。不要束缚你的手。如果你想加入,只需加入。使用您认为在逻辑上最适合的控制器来进行查询。