PeeWee上的Python数据抽象

时间:2018-03-20 19:19:07

标签: python orm dao dto peewee

这是一个更普遍的问题,但我试图在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还是两者都可以?是否有某种模式可以在这里应用?

1 个答案:

答案 0 :(得分:1)

Peewee是一个ActiveRecord ORM,因此数据访问和对象表示之间没有区别。这意味着当您执行查询时,数据将作为模型实例返回给您。鉴于这种情况,将方法放在模型本身上是很常见的,因为无论如何你都在使用它。

是否要在模型之上构建服务层完全取决于您。如果你有相互依赖的模型,这可能是有道理的。