这是一个更普遍的问题,但我试图在Peewee上使用Python作为ORM实现这一点。什么是从python程序中抽象出DB的一个好的OO方法?
在Peewee中,定义的类继承自peewee.Model并将Peewee字段作为属性。例如:
class Person(peewee.Model):
class Meta:
database = db
name = peewee.TextField()
height = peewee.DecimalField()
在OO实现中,我们希望将grow(size),die(),...等方法作为对象的一部分。是否最好在这些Peewee模型之上构建一个包含此类功能的类,还是应该将其放入模型本身?
我记得在Java EE程序中我们曾经有过DAO(数据访问对象)和DTO(数据传输对象)。 peewee模型对象是DAO还是两者都可以?是否有某种模式可以在这里应用?
答案 0 :(得分:1)
Peewee是一个ActiveRecord ORM,因此数据访问和对象表示之间没有区别。这意味着当您执行查询时,数据将作为模型实例返回给您。鉴于这种情况,将方法放在模型本身上是很常见的,因为无论如何你都在使用它。
是否要在模型之上构建服务层完全取决于您。如果你有相互依赖的模型,这可能是有道理的。