Hi all, I've tried googling for this, and I get nothing. I have a table to store data about objects. Each object should have a location property which links back to the same table. Conversely, each object should have a contents property which shows all objects which have their location set to this object.
This is the code I have so far: class DBObject(Base): __tablename__ = 'db_objects' id = Column(Integer, primary_key = True) name = Column(String) description = Column(String) location_id = Column(Integer, ForeignKey('db_objects.id')) owner_id = Column(Integer, ForeignKey('db_objects.id')) contents = relationship('DBObject', remote_side = location_id, backref = backref('location', remote_side = [location_id])) owned_objects = relationship('DBObject', remote_side = owner_id, backref = backref('owner', remote_side = [owner_id])) x = Column(Float) y = Column(Float) z = Column(Float) max_hp = Column(Float) damage = Column(Float) properties = Column(LargeBinary) When I issue Base.metadata.create_all I get this: Traceback (most recent call last): File "C:\python35\lib\site-packages\sqlalchemy\orm\relationships.py", line 2055, in _determine_joins consider_as_foreign_keys=consider_as_foreign_keys File "<string>", line 2, in join_condition File "C:\python35\lib\site-packages\sqlalchemy\sql\selectable.py", line 828, in _join_condition a, b, constraints, consider_as_foreign_keys) File "C:\python35\lib\site-packages\sqlalchemy\sql\selectable.py", line 918, in _joincond_trim_constraints "join explicitly." % (a.description, b.description)) sqlalchemy.exc.AmbiguousForeignKeysError: Can't determine join between 'db_objects' and 'db_objects'; tables have more than one foreign key constraint relationship between them. Please specify the 'onclause' of this join explicitly. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "main.py", line 30, in <module> start() File "C:\Users\Chrisn Norman\Dropbox\SRC\mindspace_server\server.py", line 15, in start db.initialise() File "C:\Users\Chrisn Norman\Dropbox\SRC\mindspace_server\db.py", line 57, in initialise for row in session.query(DBObject): File "C:\python35\lib\site-packages\sqlalchemy\orm\session.py", line 1272, in query return self._query_cls(entities, self, **kwargs) File "C:\python35\lib\site-packages\sqlalchemy\orm\query.py", line 110, in __init__ self._set_entities(entities) File "C:\python35\lib\site-packages\sqlalchemy\orm\query.py", line 120, in _set_entities self._set_entity_selectables(self._entities) File "C:\python35\lib\site-packages\sqlalchemy\orm\query.py", line 150, in _set_entity_selectables ent.setup_entity(*d[entity]) File "C:\python35\lib\site-packages\sqlalchemy\orm\query.py", line 3421, in setup_entity self._with_polymorphic = ext_info.with_polymorphic_mappers File "C:\python35\lib\site-packages\sqlalchemy\util\langhelpers.py", line 747, in __get__ obj.__dict__[self.__name__] = result = self.fget(obj) File "C:\python35\lib\site-packages\sqlalchemy\orm\mapper.py", line 1893, in _with_polymorphic_mappers configure_mappers() File "C:\python35\lib\site-packages\sqlalchemy\orm\mapper.py", line 2768, in configure_mappers mapper._post_configure_properties() File "C:\python35\lib\site-packages\sqlalchemy\orm\mapper.py", line 1710, in _post_configure_properties prop.init() File "C:\python35\lib\site-packages\sqlalchemy\orm\interfaces.py", line 183, in init self.do_init() File "C:\python35\lib\site-packages\sqlalchemy\orm\relationships.py", line 1629, in do_init self._setup_join_conditions() File "C:\python35\lib\site-packages\sqlalchemy\orm\relationships.py", line 1704, in _setup_join_conditions can_be_synced_fn=self._columns_are_mapped File "C:\python35\lib\site-packages\sqlalchemy\orm\relationships.py", line 1972, in __init__ self._determine_joins() File "C:\python35\lib\site-packages\sqlalchemy\orm\relationships.py", line 2099, in _determine_joins % self.prop) sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship DBObject.contents - 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 using latest sqlalchemy from pip and Python 3.5. Any ideas on how to fix this? Cheers, -- 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.