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.

Reply via email to