On Aug 3, 2010, at 10:24 PM, jgs9000 wrote: > Hi > > I'm relatively new to SQLAlchemy, so thanks in advance for any help > with this issue. > > I'm trying to construct a class to model a legacy table which has a > composite primary key which is also > a composite foreign key referencing the composite primary key of a > second table. I'm trying to define this > class declaratively, and also have it autoload the remaining table > structure from the underlying table.
i dont know that we have any tests which do a pure autoload plus a foreign key constraint otherwise not associated with anything. so its likely a bug. you might want to try calling table.append_constraint(constraint) after the autoload completes. > > This is what I have: > > class Wcs(skymapper_db.db.TableBase): > > from sqlalchemy import Column, Integer, ForeignKeyConstraint > > __tablename__ = 'wcs' > __table_args__ = ( > ForeignKeyConstraint(['image_id', 'amp'], > ['science_amp.image_id', 'science_amp.amp']), > {'autoload':True} > ) > > image_id = Column(Integer, primary_key=True) > amp = Column(Integer, primary_key=True) > > def __init__(self): > pass > > def __repr__(self): > return "<Wcs(%s, %s)>" % (self.image_id, self.amp) > > As it stands, I get an error when I try to instantiate this class: > > C:\Users\jgs900\Work\skymapper-alchemy>wcs.py > Traceback (most recent call last): > File "C:\Users\jgs900\Work\skymapper-alchemy\wcs.py", line 13, in > <module> > class Wcs(skymapper_db.db.TableBase): > File "C:\Python27\lib\site-packages\sqlalchemy\ext\declarative.py", > line 1017, in __init__ > _as_declarative(cls, classname, cls.__dict__) > File "C:\Python27\lib\site-packages\sqlalchemy\ext\declarative.py", > line 926, in _as_declarative > **table_kw) > File "C:\Python27\lib\site-packages\sqlalchemy\schema.py", line 209, > in __new__ > table._init(name, metadata, *args, **kw) > File "C:\Python27\lib\site-packages\sqlalchemy\schema.py", line 269, > in _init > self._init_items(*args) > File "C:\Python27\lib\site-packages\sqlalchemy\schema.py", line 60, > in _init_items > item._set_parent(self) > File "C:\Python27\lib\site-packages\sqlalchemy\schema.py", line 809, > in _set_parent > table.constraints.remove(fk.constraint) > KeyError: ForeignKeyConstraint() > > but if I leave out the autoload instruction, there is no problem. > > Am i doing something fundamentally wrong? Or am I just making a syntax > error of some sort. Any help > would be greatly appreciated. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > 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 sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.