我有以下对象定义:
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,
}
在查询项目之后,qws collectionAdapter上的for循环速度非常慢(几百毫秒。但是当我查询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为空时,for循环速度很快
知道这是怎么回事吗
我使用PostgressSQL、Python 3.6和SQLAlchemy 1.1.18
谢谢
您可以只预加载相关模型。 请尝试以下方式:
相关问题 更多 >
编程相关推荐