Python SQLAlchemy相当于与嵌套关系相关的select_和prefetch_
使用Django ORM进行此查询需要0.03秒:Python SQLAlchemy相当于与嵌套关系相关的select_和prefetch_,python,django-models,sqlalchemy,Python,Django Models,Sqlalchemy,使用Django ORM进行此查询需要0.03秒: entry = ModelA.objects.select_related( 'modelB', 'modelC', ).prefetch_related( 'modelB__modelD', 'modelE', 'modelE__modelF', 'modelE__modelF__mo
entry = ModelA.objects.select_related(
'modelB',
'modelC',
).prefetch_related(
'modelB__modelD',
'modelE',
'modelE__modelF',
'modelE__modelF__modelG',
'modelE__modelF__modelG__modelH1',
'modelE__modelF__modelG__modelH2',
'modelE__modelF__modelG__modelH3',
'modelE__modelF__modelI',
'modelE__modelF__modelJ',
).get(id=1)
我在SQLAlchemy中可以找到的等效值需要0.12秒*:
entry = session.query(ModelA) \
.options(joinedload(ModelA.modelB).joinedload(ModelB.modelD)) \
.options(subqueryload(ModelA.modelE).subqueryload(ModelE.modelF)
.subqueryload(ModelF.modelG).subqueryload('*')) \
.options(subqueryload(ModelA.modelE).subqueryload(ModelE.modelF)
.subqueryload(ModelF.modelI)) \
.options(subqueryload(ModelA.modelE).subqueryload(ModelE.modelF)
.subqueryload(ModelF.modelJ)) \
.filter(ModelA.id = 1) \
.first()
*我意识到,在Django中,我查询的modelC并不是我真正需要的
- 如何通过字段
、modelH1
和modelH2
将modelH3
替换为与同一个表相关的所需多个关系subqueryload('*')
- 当我迭代
实例时,对ModelE
的引用在sqlAlchemy中触发一个新的查询,而在Django ORM中它会自动填充。有什么我遗漏的吗ModelA