Ejemplo n.º 1
0
 def get_record(self, bibcode, load_only=None):
     if isinstance(bibcode, list):
         out = []
         with self.session_scope() as session:
             q = session.query(Records).filter(Records.bibcode.in_(bibcode))
             if load_only:
                 q = q.options(_load_only(*load_only))
             for r in q.all():
                 out.append(r.toJSON(load_only=load_only))
         return out
     else:
         with self.session_scope() as session:
             q = session.query(Records).filter_by(bibcode=bibcode)
             if load_only:
                 q = q.options(_load_only(*load_only))
             r = q.first()
             if r is None:
                 return None
             return r.toJSON(load_only=load_only)
Ejemplo n.º 2
0
 def get_record(self, bibcode, load_only=None):
     if isinstance(bibcode, list):
         out = []
         with self.session_scope() as session:
             q = session.query(Records).filter(Records.bibcode.in_(bibcode))
             if load_only:
                 q = q.options(_load_only(*load_only))
             for r in q.all():
                 out.append(r.toJSON(load_only=load_only))
         return out
     else:
         with self.session_scope() as session:
             q = session.query(Records).filter_by(bibcode=bibcode)
             if load_only:
                 q = q.options(_load_only(*load_only))
             r = q.first()
             if r is None:
                 return None
             return r.toJSON(load_only=load_only)
Ejemplo n.º 3
0
 def compute_orphaned(self, canonical_bibcodes):
     """return a list of orphaned bibcodes, compare database to passed canonical """
     orphaned = set()
     # get all bibcodes from the storage (into memory)
     store = set()
     with self.session_scope() as session:
         for r in session.query(Records).filter(Records.origin=='classic').options(_load_only('bibcode')).yield_per(1000):
             store.add(r.bibcode)
         orphaned = store.difference(canonical_bibcodes)
         self.logger.info('Found %s orphaned bibcode, %s canonical, %s from database',
                          len(orphaned), len(canonical_bibcodes), len(store))
     return orphaned