On Dec 6, 2011, at 8:02 PM, Jackson, Cameron wrote:

> For the background to the code I'm using, see this Stack Overflow question: 
> http://stackoverflow.com/questions/8394177/complex-foreign-key-constraint-in-sqlalchemy/8408659
>  
> My declarative code looks like this:
>  
>     from MyGlobals import Base
>     from sqlalchemy import Column, Integer, String, ForeignKey, 
> UniqueConstraint, ForeignKeyConstraint
>     from sqlalchemy.orm import relationship
>    
>     class SystemVariable(Base):
>         __tablename__ = 'SystemVariables'
>         id            = Column(Integer, primary_key = True)
>         name          = Column(String)
>         choice_id     = Column(Integer)
>        
>         __table_args__ = (ForeignKeyConstraint(['choice_id', 'id'],
>                                                ['VariableOptions.id', 
> 'VariableOptions.variable_id'],
>                                                name = 
> 'SystemVariables_choice_id_fkey',
>                                                use_alter = True),
>                           {})
>        
>         options = relationship('VariableOption', backref = 'variable', 
> cascade = 'all, delete, delete-orphan')
>         choice  = relationship('VariableOption', post_update = True)
>    
>     class VariableOption(Base):
>         __tablename__ = 'VariableOptions'
>         id          = Column(Integer, primary_key = True)
>         name        = Column(String)
>         variable_id = Column(Integer, ForeignKey('SystemVariables.id'))
>        
>         __table_args__ = (UniqueConstraint('id', 'variable_id'),
>                           {})
>  
> For some reason, SQLA emits id SERIAL NOT NULL for the second table 
> (VariableOptions), but for the first one (SystemVariables) it's doing id 
> INTEGER NOT NULL. Seeing as I'm using Postgres, this means that the sequence 
> is not created for SystemVariables, which is a problem.
>  
> I've tried adding autoincrement = True and Sequence('SystemVariables_id_seq') 
> to the Column declaration, but neither helped.
>  
> None of my other tables have this problem. Why is SQLA doing this for this 
> one, and how can I fix it?

yeah you might have to wait for a patch on this one.   SQLAlchemy universally 
considers a PK col with an FK to not be autoincrementing.




>  
> Thanks,
>  
> Cameron Jackson
> Engineering Intern
> Air Operations
> Thales Australia
> Thales Australia Centre, WTC Northbank Wharf, Concourse Level,
> Siddeley Street, Melbourne, VIC 3005, Australia
> Tel: +61 3 8630 4591
> [email protected] | www.thalesgroup.com.au
> ------------------------------------------------------------------------- 
> DISCLAIMER: This e-mail transmission and any documents, files and previous 
> e-mail messages attached to it are private and confidential. They may contain 
> proprietary or copyright material or information that is subject to legal 
> professional privilege. They are for the use of the intended recipient only. 
> Any unauthorised viewing, use, disclosure, copying, alteration, storage or 
> distribution of, or reliance on, this message is strictly prohibited. No part 
> may be reproduced, adapted or transmitted without the written permission of 
> the owner. If you have received this transmission in error, or are not an 
> authorised recipient, please immediately notify the sender by return email, 
> delete this message and all copies from your e-mail system, and destroy any 
> printed copies. Receipt by anyone other than the intended recipient should 
> not be deemed a waiver of any privilege or protection. Thales Australia does 
> not warrant or represent that this e-mail or any documents, files and 
> previous e-mail messages attached are error or virus free. 
> -------------------------------------------------------------------------
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to