У меня есть следующее определение объектов:
from sqlalchemy.orm import relationship
class Project():
__tablename__ = 'projects'
id = Column(Integer, primary_key=True)
qws = relationship('ProjectQWS',
foreign_keys='ProjectQWS.project_id',
cascade='all, delete-orphan',
order_by=ProjectQWS.is_main)
class ProjectQWS():
__tablename__ = 'projects_qws'
project_id = Column(
Integer,
ForeignKey('projects.id', name='fk_qws_project_id', ondelete='CASCADE'),
primary_key=True,
)
qws_id = Column(String(QWS_ID_SIZE), nullable=False, primary_key=True)
def to_dict(self):
return {
'project_id': self.project_id,
'qws_id': self.qws_id,
}
После запроса в Project для l oop over qws collectionAdapter работает очень медленно (пару сотен миллисекунд. Но это складывается, когда я запрашиваю для 1000+ проектов), даже если коллекция qws в основном содержит 1 элемент (99% времени).
def get_qws_dicts(self):
result = []
if self.qws:
for qws_instance in self.qws:
result.append(qws_instance.to_dict())
return result
Когда qws пусто, значение для l oop быстрое.
Есть идеи, что здесь происходит?
Я использую Postgress SQL, Python 3.6 и SQLAlchemy 1.1.18
Спасибо