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.

Reply via email to