sqlalchemy 模型的数据和逻辑分离
Posted
技术标签:
【中文标题】sqlalchemy 模型的数据和逻辑分离【英文标题】:Separation between data and logic for sqlalchemy models 【发布时间】:2018-07-09 01:42:42 【问题描述】:在下面的示例中,我应该将 get_friend 方法保留在我的类中还是应该将它移到外面,因为我想将数据结构与业务逻辑分开? 最佳做法是什么? 不要因为班级小而有偏见,这只是一个例子,但班级可能会更大。
from sqlalchemy import Column, Integer, String, Float, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
id = Column("id", Integer, primary_key=True)
friends = relationship("Friends")
def get_friend(self, friend_name):
for friend in self.friends:
if friend.name == friend_name:
return friend
return None
【问题讨论】:
【参考方案1】:我从没用过 python,只用 DAL 和 BLL 来回答这个问题。
User
是你的持久模型,如果我没记错的话。理想情况下,它应该只处理持久性问题。它不应该处理域逻辑;该部分应移至业务逻辑层或您的服务类。
好吧,对此没有任何硬性规定;但有“良好做法”/“建议”/“范式”/“模式”。这些是根据大型社区的更广泛经验定义的。
因此,您最好考虑将该方法移至您的 BLL。
【讨论】:
以上是关于sqlalchemy 模型的数据和逻辑分离的主要内容,如果未能解决你的问题,请参考以下文章
sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:postgres