On Mar 28, 2014, at 1:15 AM, Adrian Robert <adrian.b.rob...@gmail.com> wrote:

> I have been using the automap extension with postgres, with an inheritance 
> structure using the joined inheritance pattern. I could not figure out a way 
> to have this reflected from the DB so I define the classes for this part of 
> my schema explicitly, and when automap initializes, these classes get used 
> (and modified) for those tables and the rest get autogenerated.
> 
> It works fine until I try to delete an instance of an inheriting class: then 
> I get a circular dependency error which seems to relate to relationships and 
> backreferences created for the foreign key relationship underlying the joined 
> inheritance.
> 
> The attached code demonstrates the issue.  The first run generates the DB 
> schema from the classes, and works, any number of times.  On the second run, 
> switch the two comments for Base (in two places) to use automap.  The output 
> of the first:
> 
> % ./test.py
> RELATIONSHIPS: []
> Run completed successfully.
> 
> % ./test.py
> RELATIONSHIPS: [('employee', <RelationshipProperty at 0x10263d310; 
> employee>), ('engineer_collection', <RelationshipProperty at 0x102663210; 
> engineer_collection>)]
> Circular dependency detected. Cycles: {DeleteState(<Engineer at 
> 0x1026a9d10>)} all edges: {(DeleteState(<Engineer at 0x1026a9d10>), 
> DeleteState(<Engineer at 0x1026a9d10>)), 
> (ProcessState(OneToManyDP(Employee.engineer_collection), <Engineer at 
> 0x1026a9d10>, delete=True), DeleteState(<Engineer at 0x1026a9d10>))}
> 
> Notice that the mapper in the first case shows no relationships, despite the 
> foreign key created for the inheritance.  On the other hand when the same 
> structure is read from the DB by automap, we see forward and back 
> relationships, which I guess is somehow causing the circular dependency.
> 
> Am I doing something wrong in my attempt to use joined inheritance in 
> conjunction with automap, or is this a bug or something unsupported?

automap is creating an inappropriate relationship.  I added a rule to skip 
relationship for issubclass(local_cls, target_cls)  in 4d93a52e77895f87570, 
issue #3004.

-- 
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to