这更多的是一个普遍的问题,但是我试图在Peewee之上使用Python作为ORM来实现这一点。从python程序中抽象数据库的一种体面的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还是两者都可以?是否可以在此处应用某种模式?

最佳答案

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

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

关于python - 在PeeWee之上的Python数据抽象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49392521/

10-12 21:38