Thank you. I hesitate between using this way, or explicitly specify the relationship (is this a good idea? In my test I found 3 relations after prepare()) :
class Thermostat(Base): __tablename__ = 'thermostats' idbuiltin = Column(Integer, ForeignKey('device.id')) idthermometer = Column(Integer, ForeignKey('device.id')) thermometer = relationship(Dispositif, foreign_keys=idthermometer) builtin = relationship(Dispositif, foreign_keys=idbuiltin) Another interesting point is how to detect this error to warn. I tried to use name_for_scalar_relationship() for that, but I don't kow how to get the relationships mapper. Best regards Le vendredi 1 janvier 2016 18:27:14 UTC+2, Michael Bayer a écrit : > > you need to use the name generation functions > name_for_scalar_relationship() and/or name_for_collection_relationship() > to produce different names in each case. The "constraint" parameter > passed as we see in > > http://docs.sqlalchemy.org/en/rel_1_0/orm/extensions/automap.html#handling-simple-naming-conflicts > > is a ForeignKeyConstraint object, you can look inside of > constraint.column_keys to see if it is ['idbuiltin'] or > ['idthermometer'] and use that to generate a name. > > > > On 01/01/2016 04:16 AM, yoch....@gmail.com <javascript:> wrote: > > Hi all, > > > > I use automap with database reflection to import schema with sqlalchemy. > > > > In case I have two relationships on same foreign key in some table, only > > one relationship is created by prepare(), the second one seems > overwrited. > > > > My table looks like : > > > > | > > Table('thermostat', > > Base.metadata, > > Column('id',INTEGER(),primary_key=True,nullable=False), > > Column('idbuiltin',INTEGER(),ForeignKey('device.id')), > > Column('idthermometer',INTEGER(),ForeignKey('device.id'))) > > | > > > > How to control relationship creation to produce two distinct > relationships ? > > > > Thank you and Happy New Year ! > > > > -- > > 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.