> On Feb 26, 2015, at 5:56 AM, Julien Cigar <jci...@ulb.ac.be> wrote:
> 
>> On Wed, Feb 25, 2015 at 06:10:55PM -0500, Michael Bayer wrote:
>> 
>> 
>> Julien Cigar <jci...@ulb.ac.be> wrote:
>> 
>>>> On Thu, Feb 19, 2015 at 11:31:10AM -0500, Michael Bayer wrote:
>>>> Julien Cigar <jci...@ulb.ac.be> wrote:
>>>> 
>>>>>> On Thu, Feb 19, 2015 at 02:45:43PM +0100, Julien Cigar wrote:
>>>>>> Hello,
>>>>>> 
>>>>>> I'm using SQLAlchemy 0.9.8 with PostgreSQL and the reflection feature of
>>>>>> SQLAlchemy.
>>>>>> 
>>>>>> I have the following tables (only relevant parts are show):
>>>>>> https://gist.github.com/silenius/390bb9937490730741f2
>>>>>> 
>>>>>> and the "problematic" mapper is the one of my association object:
>>>>>> https://gist.github.com/silenius/1559a7db65ed30a1b079
>>>>>> 
>>>>>> SQLAlchemy complains with the following error:
>>>>>> "sqlalchemy.exc.InvalidRequestError: One or more mappers failed to
>>>>>> initialize - can't proceed with initialization of other mappers.
>>>>>> Original exception was: Could not locate any simple equality expressions
>>>>>> involving locally mapped foreign key columns for primary join condition
>>>>>> 'pool_invite_result.pool_invite_pool_id = pool_invite.pool_id AND
>>>>>> pool_invite.pool_id = pool.id' on relationship PoolAccountResult.pool.
>>>>>> Ensure that referencing columns are associated with a ForeignKey or
>>>>>> ForeignKeyConstraint, or are annotated in the join condition with the
>>>>>> foreign() annotation. To allow comparison operators other than '==', the
>>>>>> relationship can be marked as viewonly=True."
>>>>>> 
>>>>>> The problem is that in the PoolAccountResult mapper I want a
>>>>>> relationship to the Pool but the link is made through an intermediate
>>>>>> table (pool_invite) ..
>>>>>> 
>>>>>> Any idea how to handle this with SQLAlchemy ?
>>>>>> 
>>>>>> Thanks :)
>>>>>> 
>>>>>> Julien
>>>>> 
>>>>> ... and I'm answering to myself: it seems to work with
>>>>> https://gist.github.com/silenius/e7e59c96a7277fb5879f 
>>>>> 
>>>>> does it sound right ?
>>>> 
>>>> Sure.  Also, you could use automap which does figure these out in simple 
>>>> cases: http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/automap.html
>>> 
>>> always with this, any idea why SQLAlchemy inserts NULL and
>>> NULL for my two relationship (line 51-79) instead of the pool_obj and
>>> dup.owner ids (line 89-90), https://dpaste.de/1Trz ..?
>> 
>> getting a 404 on that link.
> 
> Hi Mike,
> 
> Thanks for your help!
> 
> I took the time to make a complete test case, available from here
> https://gist.github.com/silenius/96d6ed2544d14753853f

That's a very strange use of secondary, and I'm not sure I understand the 
rationale for an odd schema like this.   It should be pretty clear that when a 
table is set up as secondary, it is only used as a linkage between those 
immediate classes and there are no features to track the state of this table 
otherwise as though it were a mapped class.   Using the same secondary table in 
two unrelated relationships is not the intended use.  

Nevertheless, if you manipulate between Pool and User, that has no impact 
whatsoever on PoolInviteResult... Especially since we're dealing with a 
"secondary" table and not a first class mapped entity.    You should add event 
listeners as needed on attributes such that when an in-Python change occurs 
between Pool and User, the desired change occurs for PoolInviteResult as well.

> 
> I'm using PostgreSQL, and I checked that all constraints are properly
> created on server-side but I haven't checked with sqllite:// 
> 
>> 
>> 
>> 
>> 
>> 
>>> 
>>> Thanks,
>>> Julien
>>> 
>>> 
>>>>>> -- 
>>>>>> Julien Cigar
>>>>>> Belgian Biodiversity Platform (http://www.biodiversity.be)
>>>>>> PGP fingerprint: EEF9 F697 4B68 D275 7B11  6A25 B2BB 3710 A204 23C0
>>>>>> No trees were killed in the creation of this message.
>>>>>> However, many electrons were terribly inconvenienced.
>>>>>> 
>>>>>> -- 
>>>>>> 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.
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Julien Cigar
>>>>> Belgian Biodiversity Platform (http://www.biodiversity.be)
>>>>> PGP fingerprint: EEF9 F697 4B68 D275 7B11  6A25 B2BB 3710 A204 23C0
>>>>> No trees were killed in the creation of this message.
>>>>> However, many electrons were terribly inconvenienced.
>>>>> 
>>>>> -- 
>>>>> 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.
>>>> 
>>>> -- 
>>>> 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.
>>> 
>>> -- 
>>> Julien Cigar
>>> Belgian Biodiversity Platform (http://www.biodiversity.be)
>>> PGP fingerprint: EEF9 F697 4B68 D275 7B11  6A25 B2BB 3710 A204 23C0
>>> No trees were killed in the creation of this message.
>>> However, many electrons were terribly inconvenienced.
>>> 
>>> -- 
>>> 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.
>> 
>> -- 
>> 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.
> 
> -- 
> Julien Cigar
> Belgian Biodiversity Platform (http://www.biodiversity.be)
> PGP fingerprint: EEF9 F697 4B68 D275 7B11  6A25 B2BB 3710 A204 23C0
> No trees were killed in the creation of this message.
> However, many electrons were terribly inconvenienced.
> 
> -- 
> 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.

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