Hi,
I want to use automap to generate mapping from existing database, but the
relation mapping fails.
I understand what happens, but I can't find a proper workaround to fix this
error.
Here a minimal code example with the minimal schema :
CREATE TABLE `user` (
`id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `contact` (
`iduser` INT UNSIGNED NOT NULL,
`idcontact` INT UNSIGNED NOT NULL,
PRIMARY KEY (`iduser`, `idcontact`),
FOREIGN KEY (`iduser`) REFERENCES `user` (`id`),
FOREIGN KEY (`idcontact`) REFERENCES `user` (`id`)
) ENGINE=InnoDB;
The minimal code is :
Base = automap_base()
Base.prepare(engine, reflect=True)
configure_mappers()
which fails with this backtrace :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "testing.py", line 11, in <module>
configure_mappers()
File "../site-packages/sqlalchemy/orm/mapper.py", line 2866, in
configure_mappers
mapper._post_configure_properties()
File "../site-packages/sqlalchemy/orm/mapper.py", line 1765, in
_post_configure_properties
prop.init()
File "../site-packages/sqlalchemy/orm/interfaces.py", line 184, in init
self.do_init()
File "../site-packages/sqlalchemy/orm/relationships.py", line 1656, in
do_init
self._generate_backref()
File "../site-packages/sqlalchemy/orm/relationships.py", line 1837, in
_generate_backref
(backref_key, self, m))
sqlalchemy.exc.ArgumentError: Error creating backref 'user_collection' on
relationship 'user.user_collection': property of that name exists on mapper
'Mapper|user|user'
In fact, I only want to have one-to-many relationship that connects a user
to all his contacts. But Sqlalchemy try to make a bidirectional
relationship (many-to-many), which fails because the relationship name is
the same in both cases (user_collection).
Do you have a good solution for this problem ?
Best regards
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.