While primary_key is specified twice, once for each column, there is only 
ONE primary key which is a composite.

You need to use ForeignKeyConstraint at the Table level to specify a 
composite foreign key.

You need to provide two lists, the local table columns, and the 
corresponding foreign table columns.
Now you know what to search for if  you need more information.

from the schema definition language docs

It’s important to note that the 
ForeignKeyConstraint<http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html#sqlalchemy.schema.ForeignKeyConstraint>
 is 
the only way to define a composite foreign key. While we could also have 
placed individual 
ForeignKey<http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html#sqlalchemy.schema.ForeignKey>
 objects 
on both theinvoice_item.invoice_id and invoice_item.ref_num columns, 
SQLAlchemy would not be aware that these two values should be paired 
together - it would be two individual foreign key constraints instead of a 
single composite foreign key referencing two columns.


On Wednesday, March 6, 2013 9:00:56 PM UTC-5, Randall Degges wrote:
>
> Hi Mike,
>
> Sorry about that, I actually had a typo there. I've got a correct code 
> sample available here 
> http://stackoverflow.com/questions/15260842/how-can-i-build-a-foreignkey-to-a-table-which-has-multiple-primary-keys
>  (just 
> posted it).
>
> Thank you,
>
> -Randall
>
>
> On Wed, Mar 6, 2013 at 5:54 PM, Michael Bayer 
> <mik...@zzzcomputing.com<javascript:>
> > wrote:
>
>> a database table can only have one primary key (hence "primary"), but 
>> that key can contain more than one column (a "composite" primary key).
>>
>> the model you have here is a little unclear, did you mean for the primary 
>> key of Exchange to be "exchange" , and the primary key of PhoneNumber to be 
>> the composite of "exchange" and "phone number" ?   that would be my guess 
>> as to what you're looking for.
>>
>>
>>
>> On Mar 6, 2013, at 6:05 PM, Randall Degges <rde...@gmail.com<javascript:>> 
>> wrote:
>>
>> Hi all,
>>
>> I'm having a lot of trouble figuring out how to properly build my 
>> ForeignKey column for a table I'm defining. I've outlined my models here: 
>> http://pastie.org/6407419# (and put a comment next to the problematic 
>> line in my PhoneNumber model).
>>
>> Here's what's happening:
>>
>> My Exchange table has two primary keys. This is required for my use case.
>>
>> The PhoneNumber table I'm trying to define needs a ForeignKey to the 
>> Exchange table, but since the Exchange table has two primary keys, I can't 
>> figure out how to make the relationship work.
>>
>> Any guidance would be appreciated. Thank you.
>>
>> -- 
>> 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+...@googlegroups.com <javascript:>.
>>
>> To post to this group, send email to sqlal...@googlegroups.com<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>>
>>  -- 
>> 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+...@googlegroups.com <javascript:>.
>>
>> To post to this group, send email to sqlal...@googlegroups.com<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>
>
> -- 
> Randall Degges
> *http://rdegges.com/*
>  

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to