def _fill_relations(self, schemes_d, pks): if not pks: return query = select( [tbl.concept_relation.c.id, tbl.concept_relation.c.scheme_id, tbl.concept_relation.c.name] ).where( tbl.concept_relation.c.scheme_id.in_(pks) ) result = self.session.execute(query).fetchall() for pk, scheme_id, name in result: relation = Relation(schemes_d[scheme_id], name) relation._alchemy_pk = pk schemes_d[scheme_id].relations._add_raw(relation)
def _fetch(self, params, offset, limit): records = self._fetch_records( [tbl.concept_relation.c.id, tbl.concept_relation.c.name, tbl.concept_relation.c.scheme_id, ], params, offset, limit ) result = [] for pk, name, scheme_id in records: relation = self.conn.identity_map.get('relations', pk) if relation: result.append(relation) else: scheme = self.conn.identity_map.get('schemes', scheme_id) if not scheme: raise NotImplementedError relation = Relation(scheme, name) relation._alchemy_pk = pk self.conn.identity_map.put('relations', pk, relation) result.append(relation) return result