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.
