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.