sqlalchemy — Проблемы с производительностью из-за слишком большого количества методов / атрибутов?

#python #sqlalchemy

#python #sqlalchemy

Вопрос:

Я использую sqlalchemy уже несколько лет вместо моделей Django. Я обнаружил, что очень удобно иметь пользовательские методы, прикрепленные к этим моделям

т. е.

 class Widget(Base):
     __tablename__ = 'widgets'

     id = Column(Integer, primary_key=True)
     name = Column(Unicode(100))

     def get_slug(self, max_length=50):
         return slugify(self.name)[:max_length]
  

Есть ли снижение производительности при выполнении таких действий, как session.query(Widget) если модель содержит несколько десятков сложных методов (50-75 строк)? Загружаются ли они в память для каждой возвращаемой строки, и было бы эффективнее переместить некоторые из этих менее используемых методов во вспомогательные функции и импортировать по мере необходимости?

 def some_helper_function(widget):
    ':param widget: a instance of Widget()'
    # do something
  

Спасибо!

Комментарии:

1. Я не очень хорошо разбираюсь в SA — но обычно ORM используют отложенную оценку

Ответ №1:

У вас не было бы никакого снижения производительности при загрузке объектов из базы данных с помощью SA, используя только a session.query(...) .
И вам определенно не следует переносить какие-либо методы в какую-либо вспомогательную функцию ради производительности, поскольку при этом вы в основном разрушите объектно-ориентированную парадигму вашей модели.