Skip to content

Commit 8a0deb4

Browse files
Implemented Eager Loading for samplingfeaturedataset query.
1 parent 4acdf62 commit 8a0deb4

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

odm2api/ODM2/services/readService.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import pandas as pd
3838

3939
from sqlalchemy import distinct, exists
40+
from sqlalchemy.orm import lazyload, joinedload, contains_eager, eagerload, defer, deferred, subqueryload
4041

4142
__author__ = 'sreeder'
4243

@@ -78,7 +79,6 @@ class SamplingFeatureDataSet():
7879
def __init__(self, samplingfeature, datasetresults, relatedfeatures):
7980
sf = samplingfeature
8081

81-
self.SamplingFeature = sf
8282
self.SamplingFeatureID = sf.SamplingFeatureID
8383
self.SamplingFeatureUUID = sf.SamplingFeatureUUID
8484
self.SamplingFeatureTypeCV = sf.SamplingFeatureTypeCV
@@ -955,10 +955,24 @@ def getSamplingFeatureDatasets(self, ids=None, codes=None, uuids=None, dstype=No
955955
sfds=[]
956956
for sf in sf_list:
957957

958-
q = self._session.query(DataSetsResults)\
959-
.join(Results)\
960-
.join(FeatureActions)\
961-
.filter(FeatureActions.SamplingFeatureID == sf.SamplingFeatureID)
958+
# q = self._session.query(DataSetsResults)\
959+
# .options(subqueryload(DataSetsResults.ResultObj)\
960+
# .subqueryload(Results.FeatureActionObj)\
961+
# .load_only(FeatureActions.SamplingFeatureID))\
962+
# .filter(FeatureActions.SamplingFeatureID == sf.SamplingFeatureID)
963+
964+
q = self._session.query(DataSetsResults) \
965+
.join(DataSetsResults.ResultObj)\
966+
.join(Results.FeatureActionObj)\
967+
.filter(FeatureActions.SamplingFeatureID == sf.SamplingFeatureID)\
968+
.options(contains_eager(DataSetsResults.ResultObj).contains_eager(Results.FeatureActionObj)\
969+
.load_only(FeatureActions.SamplingFeatureID))
970+
971+
# q = self._session.query(DataSetsResults)\
972+
# .join(Results)\
973+
# .join(FeatureActions)\
974+
# .filter(FeatureActions.SamplingFeatureID == sf.SamplingFeatureID)
975+
962976

963977
if dstype:
964978
q = q.filter_by(DatasetTypeCV=dstype)

0 commit comments

Comments
 (0)