Ha! Yes, I should not have taken this literally. Will try tomorrow and let 
you know the outcome.

Thanks!

On Wednesday, June 1, 2016 at 3:55:35 PM UTC-5, Mike Bayer wrote:
>
> there's no "eager" strategy.  you'd want something like lazy="joined" or 
> something like that.   check the docs. 
>
>
>
> On 06/01/2016 04:19 PM, Horcle wrote: 
> > Hi Mike, 
> > Just verifying: 
> > 
> > Should 
> > 
> > class Patient(Model): 
> >       encounters = relationship( 
> >               "Encounter", 
> >               backref_populates='patient', 
> >               lazy='dynamic') 
> > 
> > be 
> > 
> > class Patient(Model): 
> >       encounters = relationship( 
> >               "Encounter", 
> >               back_populates='patient', 
> >               lazy='dynamic') 
> > 
> > 
> > If this is true, I am getting an error that 
> > 
> > Exception: can't locate strategy for <class 
> > 'sqlalchemy.orm.relationships.RelationshipProperty'> (('lazy', 
> 'eager'),) 
> > 
> > Btw, we rebuilt the database using patient_id as a primary key. 
> > 
> > Thanks for your help! 
> > 
> > Greg-- 
> > 
> > On Tuesday, May 31, 2016 at 3:49:29 PM UTC-5, Mike Bayer wrote: 
> > 
> >     you should use "dynamic" and your relationships are mis-configured 
> with 
> >     mis-use of the backref() construct, as you've constructed 
> relationships 
> >     on both sides that are mutual you'd use back_populates: 
> > 
> > 
> >     class Encounter(Model): 
> >         patient = relationship( 
> >                "Patient", 
> >                back_populates='encounters', 
> >                lazy='eager') 
> > 
> >     class Patent(Model): 
> >           encounters = relationship( 
> >                   "Encounter", 
> >                   backref_populates='patient', 
> >                   lazy='dynamic') 
> > 
> > 
> >     Also the foreign key from Encounter.patient_id to Patient.patient_id 
> >     does not illustrate a unique index in use and will not be accepted 
> by 
> >     all database backends as a real constraint unless one is added (and 
> >     regardless, performance will suffer without an index on this 
> column). 
> >     Typically, Encounter.patient_id would refer to the primary key of 
> >     Patient which is Patient.id. 
> > 
> > 
> > 
> >     On 05/31/2016 04:38 PM, Horcle wrote: 
> >     > I guess my question is: How can I efficiently load Patient and its 
> >     > related Encounters? I have tried various loading strategies of 
> >     dynamic, 
> >     > joined (I would think this would be the desired option), subquery, 
> no 
> >     > load, etc., and it these do not load. On the other hand, I can 
> load 
> >     > Encounter just fine and access an instance of the Patient object. 
> >     > 
> >     > 
> >     > 
> >     > On Tuesday, May 31, 2016 at 11:20:37 AM UTC-5, Horcle wrote: 
> >     > 
> >     >     I have the following two models: 
> >     > 
> >     >     | 
> >     >     ClassEncounter(Model): 
> >     >         __tablename__ ='cp_service' 
> >     >         id =Column(Integer,primary_key=True,autoincrement=True) 
> >     >         master_service_id =Column(String(255)) 
> >     >         admission_datetime =Column(DateTime) 
> >     >         admission_provider_id =Column(String(255)) 
> >     >         admission_status =Column(String(255)) 
> >     >         age_at_visit =Column(String(255)) 
> >     >         attending_provider_id =Column(String(255)) 
> >     >         center =Column(String(255)) 
> >     >         department_name =Column(String(255)) 
> >     >         discharge_datetime =Column(DateTime) 
> >     >         encounter_category =Column(String(255)) 
> >     >         encounter_class =Column(String(255)) 
> >     >         encounter_date =Column(DateTime) 
> >     >         encounter_setting =Column(String(255)) 
> >     >         encounter_type =Column(String(255)) 
> >     >         primary_care_provider_id =Column(String(255)) 
> >     >         primary_service_yn =Column(String(255)) 
> >     >         provider_id =Column(String(255)) 
> >     >         serv_area_id_orig =Column(String(255)) 
> >     >         service_id =Column(Integer) 
> >     >         patient_id 
> >     =Column(Integer,ForeignKey('cp_patient.patient_id')) 
> >     >         patient 
> >     > 
> >     
> =relationship("Patient",backref=backref("patientEncounter"),lazy='eager',primaryjoin="Patient.patient_id==Encounter.patient_id")
>  
>
> > 
> >     >     | 
> >     > 
> >     >     | 
> >     >     classPatient(Model): 
> >     >         __tablename__ ='cp_patient' 
> >     >         id =Column(Integer,primary_key=True,autoincrement=True) 
> >     >         first_name =Column(String(100)) 
> >     >         middle_name =Column(String(80)) 
> >     >         last_name =Column(String(80)) 
> >     >         sex =Column(String(80)) 
> >     >         race =Column(String(80)) 
> >     >         birth_date =Column(DateTime) 
> >     >         ethnicity =Column(String(80)) 
> >     >         race =Column(String(80)) 
> >     >         patient_id =Column(Integer) 
> >     >         mrn =Column(String(80)) 
> >     >         title =Column(String(80)) 
> >     >         suffix =Column(String(80)) 
> >     >         name_alias =Column(String(80)) 
> >     >         addr_1 =Column(String(80)) 
> >     >         addr_2 =Column(String(80)) 
> >     >         addr_3 =Column(String(80)) 
> >     >         city =Column(String(80)) 
> >     >         state =Column(String(80)) 
> >     >         country =Column(String(80)) 
> >     >         zip =Column(String(80)) 
> >     >         encounter 
> >     > 
> >     
> =relationship("Encounter",backref=backref("Patient"),lazy='dynamic',primaryjoin="Patient.patient_id==Encounter.patient_id")
>  
>
> > 
> >     >     | 
> >     > 
> >     > 
> >     >     Where one patient can have many encounters. 
> >     > 
> >     >     I am able to load the patent model fine in a scaffolded list 
> >     when I 
> >     >     comment out the encounter relationship in the last line (there 
> >     are 
> >     >     roughly 35K patients), but when I link it to Encounters (1.7 
> >     >     million), then I am running into major performance issues. I 
> >     tried 
> >     >     using lazy='dynamic', but got an error that: 
> >     >     | 
> >     >     Onrelationship Encounter.patient,'dynamic'loaders cannot be 
> used 
> >     >     withmany-to-one/one-to-one relationships and/oruselist=False. 
> >     >     | 
> >     > 
> >     >     What other options are there available to not load all the 
> >     relations 
> >     >     until needed? 
> >     > 
> >     >     Thanks! 
> >     > 
> >     > -- 
> >     > You received this message because you are subscribed to the Google 
> >     > Groups "sqlalchemy" group. 
> >     > To unsubscribe from this group and stop receiving emails from it, 
> >     send 
> >     > an email to sqlalchemy+...@googlegroups.com <javascript:> 
> >     > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:> 
> <javascript:>>. 
> >     > To post to this group, send email to sqlal...@googlegroups.com 
> >     <javascript:> 
> >     > <mailto:sqlal...@googlegroups.com <javascript:>>. 
> >     > Visit this group at https://groups.google.com/group/sqlalchemy 
> >     <https://groups.google.com/group/sqlalchemy>. 
> >     > For more options, visit https://groups.google.com/d/optout 
> >     <https://groups.google.com/d/optout>. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> > Groups "sqlalchemy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> > an email to sqlalchemy+...@googlegroups.com <javascript:> 
> > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>. 
> > To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:> 
> > <mailto:sqlal...@googlegroups.com <javascript:>>. 
> > Visit this group at https://groups.google.com/group/sqlalchemy. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to