Абстракция данных Python поверх PeeWee

Это скорее общий вопрос, но я пытаюсь реализовать это с помощью 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 или может быть и то, и другое? Можно ли здесь применить какой-то узор?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
274
1

Ответы 1

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

Хотите ли вы создать сервисный слой поверх ваших моделей, полностью зависит от вас. Если у вас есть взаимозависимые модели, это может иметь смысл.

Другие вопросы по теме