On Wed, Feb 7, 2018 at 6:01 AM, Jeremy Flowers <jeremy.g.flow...@gmail.com> wrote: > 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
because the project is about twelve years old and you will acquire small naming inconsistencies over that kind of time period that are over time less and less worth changing compared to everything else that has to change year to year. You should also note "backref" which not only has no underscore but abbreviates "reference". probably the biggest name change ever was using the name "relationship" instead of "relation" - that was worth changing because I became aware early on that "relation" is a central term in relational algebra that refers to what we call a "table" in SQL. To this day people still call them "relations". The old name is still supported. > > -- > 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. -- 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.