Below is a snip of the relevant mappings.  They appear to work but take forever to load.  I suspect there might be a better way to do this?
#---------------------------------------------------------------
policies = Table('pol_homepolicy_tbl', engine,
    Column('pol_policy_num', String(10), primary_key=True, key='policyNum'),
    Column('pol_policy_eff_date', DateTime, primary_key=True, key='effectiveDate'),
    ...  
)

endorsements = Table('end_endorsement_tbl', engine,
    Column('end_policy_num', String(10), ForeignKey('pol_homepolicy_tbl.policyNum'), primary_key=True, key='policyNum'),
    Column('end_policy_eff_date', DateTime, ForeignKey('pol_homepolicy_tbl.effectiveDate'), primary_key=True, key='effectiveDate'),
    Column('end_endorsement_type', String(20), ForeignKey('uhe_endorsement_tbl.type'), primary_key=True, key='type'),
    Column('end_endorsement_id', Integer, primary_key=True, key='id'),
    Column('end_endorsement_desc', String(150), key='description'),
    Column('end_endorsement_premium', Numeric(precision=2, length=9), key='premium')
    ...
)
    
endorsement_line_items_select = select(
    [
    endorsements.c.type,
    endorsements.c.id,
    endorsements.c.description,
    endorsements.c.premium
    ]
).alias('endorsement_line_items_select')

EndorsementLineItem.mapper = mapper(EndorsementLineItem, endorsement_line_items_select)

distinct_endorsements_select = select(
    [
    endorsements.c.policyNum ,
    endorsements.c.effectiveDate,
    endorsements.c.type
    ],
    distinct=True
    ).alias('distinct_endorsements_select')
            
Endorsement.mapper = mapper(Endorsement, distinct_endorsements_select, is_primary=True, properties=dict(
    lineItems = relation(EndorsementLineItem.mapper, lazy=True, private=True,
        primaryjoin=distinct_endorsements_select.c.end_endorsement_type==endorsement_line_items_select.c.end_endorsement_type
    )
))

Policy.mapper = mapper(Policy, policies, properties=dict(
    endorsements = relation(Endorsement.mapper, lazy=True, private=True)
))
policies = Table('pol_homepolicy_tbl', engine,
    Column('pol_policy_num', String(10), primary_key=True, key='policyNum'),
    Column('pol_policy_eff_date', DateTime, primary_key=True, 
key='effectiveDate'),
        ...   
)

endorsements = Table('end_endorsement_tbl', engine,
    Column('end_policy_num', String(10), 
ForeignKey('pol_homepolicy_tbl.policyNum'), primary_key=True, key='policyNum'),
    Column('end_policy_eff_date', DateTime, 
ForeignKey('pol_homepolicy_tbl.effectiveDate'), primary_key=True, 
key='effectiveDate'),
    Column('end_endorsement_type', String(20), 
ForeignKey('uhe_endorsement_tbl.type'), primary_key=True, key='type'),
    Column('end_endorsement_id', Integer, primary_key=True, key='id'),
    Column('end_endorsement_desc', String(150), key='description'),
    Column('end_endorsement_premium', Numeric(precision=2, length=9), 
key='premium')
    ...
)
    
endorsement_line_items_select = select(
    [
    endorsements.c.type,
    endorsements.c.id,
    endorsements.c.description,
    endorsements.c.premium
    ]
).alias('endorsement_line_items_select')

EndorsementLineItem.mapper = mapper(EndorsementLineItem, 
endorsement_line_items_select)

distinct_endorsements_select = select(
        [
        endorsements.c.policyNum, 
        endorsements.c.effectiveDate,
        endorsements.c.type
        ],
        distinct=True
        ).alias('distinct_endorsements_select')
            
Endorsement.mapper = mapper(Endorsement, distinct_endorsements_select, 
is_primary=True, properties=dict(
    lineItems = relation(EndorsementLineItem.mapper, lazy=True, private=True,
        
primaryjoin=distinct_endorsements_select.c.end_endorsement_type==endorsement_line_items_select.c.end_endorsement_type
    )
))

Policy.mapper = mapper(Policy, policies, properties=dict(
    endorsements = relation(Endorsement.mapper, lazy=True, private=True)
))

Reply via email to