Это скорее общий вопрос, но я пытаюсь реализовать это с помощью Python поверх Peewee в качестве ORM. Каков достойный объектно-ориентированный способ абстрагирования БД из программы Python?
В Peewee определены классы, которые наследуются от peewee.Model и имеют поля Peewee в качестве атрибутов, например:
class Person(peewee.Model):
class Meta:
database = db
name = peewee.TextField()
height = peewee.DecimalField()
В объектно-ориентированной реализации мы хотели бы, чтобы такие методы, как grow (size), die (), .. были частью объектов. Лучше всего создать класс поверх этих моделей Peewee, чтобы он содержал такую функциональность, или это должно быть включено в саму модель?
Я помню, что в программе Java EE мы использовали DAO (объект доступа к данным) и DTO (объект передачи данных). Объект модели peewee - это DAO или может быть и то, и другое? Можно ли здесь применить какой-то узор?






Peewee - это ORM ActiveRecord, поэтому нет различия между доступом к данным и представлением объекта. Это означает, что при выполнении запросов данные возвращаются вам в виде экземпляров модели. Учитывая, что это так, обычно методы помещаются в саму модель, поскольку вы все равно ее используете.
Хотите ли вы создать сервисный слой поверх ваших моделей, полностью зависит от вас. Если у вас есть взаимозависимые модели, это может иметь смысл.