Commit 4a23017e authored by Jay's avatar Jay
Browse files

Updates object loading via ORM.

parent 5e0f7799
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
import json
import logging
import sys

# Set the logging level
logging.basicConfig(level='INFO')
logger = logging.getLogger()

from autocnet.graph.node import NetworkNode
from autocnet.graph.edge import NetworkEdge
from autocnet.utils.utils import import_func
@@ -8,6 +13,8 @@ from autocnet.utils.serializers import object_hook
from autocnet.io.db.model import Measures, Points, Overlay, Images
from autocnet.io.db.connection import retry, new_connection

from sqlalchemy.orm import joinedload

apply_iterable_options = {
                'measures' : Measures,
                'measure' : Measures,
@@ -62,11 +69,13 @@ def _instantiate_row(msg, session):
    """
    # Get the dict mapping iterable keyword types to the objects
    obj = apply_iterable_options[msg['along']]
    res = session.query(obj).filter(getattr(obj, 'id')==msg['id']).one()
    session.expunge_all() # Disconnect the object from the session
    res = session.query(obj). \
            filter(getattr(obj, 'id')==msg['id']). \
            options(joinedload('*')). \
            one()
    session.expunge_all()
    return res

@retry()
def execute_func(func, *args, **kwargs):
    return func(*args, **kwargs)

@@ -133,7 +142,7 @@ def process(msg):
def main():
    msg = ''.join(sys.argv[1:])
    result = process(msg)
    print(result)
    logging.info('Result: ', result)
    
if __name__ == '__main__':
    main()
+2 −2
Original line number Diff line number Diff line
@@ -436,7 +436,7 @@ class Points(Base, BaseMixin):
                                spatial_index=False))
    measures = relationship('Measures', 
                            order_by="asc(Measures.id)", 
                            backref=backref('point', lazy='joined'),
                            back_populates="point",
                            passive_deletes=True)
    reference_index = Column("referenceIndex", Integer, default=0)
    _residuals = Column("residuals", ARRAY(Float))
@@ -690,7 +690,7 @@ class Measures(BaseMixin, Base):
    linesigma = Column(Float)
    weight = Column(Float, default=None)
    rms = Column(Float)

    point = relationship("Points", back_populates="measures")
    
    _default_fields = ['id', 'pointid', 'imageid', 'serial', 'measuretype', 'ignore',
                       'line', 'sample', 'template_metric', 'template_shift', 'phase_error',
+7 −6
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ from contextlib import nullcontext
import logging

from sqlalchemy.sql.expression import bindparam

from sqlalchemy.orm import joinedload
from autocnet.io.db.connection import retry
from autocnet.io.db.model import Images, Overlay, Points, Measures
from autocnet.graph.node import NetworkNode
@@ -11,7 +11,7 @@ from autocnet.graph.node import NetworkNode
log = logging.getLogger(__name__)


@retry()
#@retry()
def update_measures(ncg, session, measures_iterable_to_update):
    if not measures_iterable_to_update:
        return
@@ -28,7 +28,7 @@ def update_measures(ncg, session, measures_iterable_to_update):
        session.execute(stmt, measures_iterable_to_update)
    return

@retry()
#@retry()
def ignore_measures(ncg, session, measures_iterable_to_ignore, chooser):
    with ncg.session_scope() if ncg is not None else nullcontext(session) as session:
        measures_to_set_false = [{'_id':i} for i in measures_iterable_to_ignore]
@@ -83,9 +83,10 @@ def get_overlap(ncg, session, overlapid):
@retry(wait_time=30)
def get_point(ncg, session, pointid):
    with ncg.session_scope() if ncg is not None else nullcontext(session) as session:
        point = session.query(Points).filter(Points.id == pointid).one()
        # Get the measures as well.
        _ = point.measures
        point = session.query(Points). \
                filter(Points.id == pointid). \
                options(joinedload('*')). \
                one()
        session.expunge_all()
    return point