Hi King Simon,

Thanks for your answer but this doesn't solve my problem.
If I comment my parent_id definition in the objects_tree definition,
everything is OK with create_all() invocation.

If I change the parent_id column definition to :

sa.Column('parent_id', None, sa.ForeignKey('objects.id',
ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)

everything is still OK (parent_id is not a foreign key on another
foreign key anymore). But as soon as I try :

sa.Column('parent_id', None, sa.ForeignKey('objects.parent_id',
ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)

the create_all() is broken.

Any idea ?

Laurent



On 24 août, 13:48, "King Simon-NFHD78" <simon.k...@motorola.com>
wrote:
> > -----Original Message-----
> > From: sqlalchemy@googlegroups.com
> > [mailto:sqlalch...@googlegroups.com] On Behalf Of Laurent Rahuel
> > Sent: 24 August 2009 12:16
> > To: sqlalchemy
> > Subject: [sqlalchemy] ForeignKey on a ForeignKey
>
> > Hi all,
>
> > I'm stucked with a problem I'm not able to solve (SA 0.5.2).
> > I hope on
> > of you would be smarter than me.
>
> > Here is the problem:
>
> > """""""""""""""""""""""""""""""""""""""
> > import sqlalchemy as sa
>
> > __metadata__ = sa.MetaData()
>
> > OBJECTS = sa.Table('objects', __metadata__,
> >      sa.Column('id', sa.Integer, primary_key=True),
> >      sa.Column('parent_id', sa.ForeignKey('objects.id',
> > ondelete='CASCADE', onupdate='CASCADE')),
> >      sa.Column('name', sa.Text, index=True, nullable=False,
> > default='Root'),
> > )
>
> > OBJECTSTREE = sa.Table('objects_tree', __metadata__,
> >      sa.Column('id', sa.Integer, primary_key=True),
> >      sa.Column('child_id', sa.ForeignKey('objects.id',
> > ondelete='CASCADE', onupdate='CASCADE'), primary_key=True),
> >      sa.Column('parent_id', sa.ForeignKey('objects.parent_id',
> > ondelete='CASCADE', onupdate='CASCADE'), primary_key=True),
> >      sa.Column('depth', sa.Integer, nullable=False,
> > index=True, default=0),
> > )
>
> > When I call the create_all() method from metadata, I always get this
> > error -> sqlalchemy/types.py", line 375, in get_col_spec raise
> > NotImplementedError()
>
> I think your Column definitions are wrong - the second parameter to
> Column should be the column type (Integer, String etc.). For foreign
> keys, you can pass None, in which case the type will be the same as the
> column that the key is pointing at.
>
> eg.
>
> sa.Column('child_id', None, sa.ForeignKey'objects.id',
> ondelete='CASCADE', onupdate='CASCADE'), primary_key=True)
>
> Hope that helps,
>
> Simon
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@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