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 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