Hi, When SQALchemy can't guess the join condition to use for a relationship, you have to use the primaryjoin parameter :
ursmst = relationship('Usrmst', primaryjoin="Workgrp.workgrp_owner==Usrmst.id") Hope this helps. Regards Gaston Le 07/02/2018 à 12:01, Jeremy Flowers a écrit : > Hi > I've recently used sqlacodegen > > When I try and run against the generated code it get this message > that I've been unable to fix: > > Could not determine join condition between parent/child tables on > relationship Workgrp.usrmst - there are multiple foreign key paths > linking the tables. Specify the 'foreign_keys' argument, providing a > list of those columns which should be counted as containing a foreign > key reference to the parent table. > > I'm wondering if someone can shed some light: > > Here is the generated code for the relevant tables causing the issue: > > class Workgrp(Owner): > __tablename__ = 'workgrp' > > workgrp_id = Column(ForeignKey('owner.owner_id'), primary_key=True) > workgrp_prntid = Column(Numeric(scale=0, asdecimal=False)) > workgrp_name = Column(String(256)) > workgrp_desc = Column(String(4000)) > workgrp_owner = Column(ForeignKey('usrmst.usrmst_id')) > workgrp_lstchgtm = Column(DateTime, index=True) > workgrp_externid = Column(String(20)) > workgrp_profile = Column(Text) > workgrp_usrmodtm = Column(DateTime) > > usrmst = relationship('Usrmst') > > > class Usrmst(Owner): > __tablename__ = 'usrmst' > __table_args__ = ( > Index('usrmst_ak1', 'usrmst_domain', 'usrmst_name'), > ) > > usrmst_id = Column(ForeignKey('owner.owner_id'), primary_key=True) > usrmst_domain = Column(String(256)) > usrmst_name = Column(String(256), nullable=False) > usrmst_fullname = Column(String(1024)) > usrmst_desc = Column(String(4000)) > usrmst_phoneno = Column(String(40)) > usrmst_pagerno = Column(String(40)) > usrmst_email = Column(String(1024)) > usrmst_emailtype = Column(Numeric(scale=0, asdecimal=False)) > secmst_id = Column(ForeignKey('secmst.secmst_id')) > lngmst_id = Column(ForeignKey('lngmst.lngmst_id')) > usrmst_password = Column(String(1024)) > usrmst_externid = Column(String(20)) > usrmst_suser = Column(String(1)) > usrmst_lstchgtm = Column(DateTime, index=True) > usrmst_orapassword = Column(String(144)) > usrmst_wingroup = Column(String(1)) > usrmst_tmpacct = Column(String(1)) > usrmst_profile = Column(Text) > usrmst_usrmodtm = Column(DateTime) > usrmst_principal = Column(String(256)) > usrmst_keytab = Column(String(4000)) > > lngmst = relationship('Lngmst') > secmst = relationship('Secmst') > > I've looked at the SQLAlchemy docs, and tried things with > foreign_keys, primaryjoin, > http://docs.sqlalchemy.org/en/latest/orm/relationship_api.html#sqlalchemy.orm.relationship.params.foreign_keys > http://docs.sqlalchemy.org/en/latest/orm/join_conditions.html#relationship-custom-foreign > > But ended up with messages like ' > Table' object has no attribute 'usrmst_id' > AttributeError: 'Table' object has no attribute 'workgrp_owner' > > Also for Mike Bayer: Why is there no consistency in naming within > SQLAlchemy?: > foreign_keys uses underscore > primaryjoin doesn't > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > 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 > <mailto:sqlalchemy+unsubscr...@googlegroups.com>. > To post to this group, send email to sqlalchemy@googlegroups.com > <mailto:sqlalchemy@googlegroups.com>. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- 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.