-Original Message-
From: sqlalchemy@googlegroups.com
[mailto:sqlalch...@googlegroups.com] On Behalf Of Jules Stevenson
Sent: 13 July 2010 15:01
To: sqlalchemy@googlegroups.com
Subject: [sqlalchemy] Problem with Joined Table inheritance
Apologies for any stupidity, but I'm struggling with some joined table
inheritance, I have the following code:
widgets_table = sa.Table('web_widgets', meta.metadata,
sa.Column('widget_id', sa.types.Integer, primary_key=True),
sa.Column('title',sa.types.String(length=255)),
sa.Column('widget_type', sa.types.String(30), nullable=False),
sa.Column('position', sa.types.Integer),
sa.Column('page_id', sa.types.Integer,
sa.ForeignKey('web_pages.id'))
)
video_widget_table = sa.Table('web_video_widget', meta.metadata,
sa.Column('widget_id', sa.types.Integer,
sa.ForeignKey('web_widgets.widget_id'), primary_key=True),
sa.Column('teaser', sa.types.String(length=1)),
sa.Column('body',sa.types.String(length=21845)),
sa.Column('image', sa.types.String(length=256))
)
class ArkWebWidget(object):
def __init__(self):
pass
class ArkWebVideoWidget(object):
def __init__(self):
pass
orm.mapper(ArkWebWidget, widgets_table,
polymorphic_on=widgets_table.c.widget_type,
polymorphic_identity='widget'
)
orm.mapper(ArkWebVideoWidget, video_widget_table,
inherits=ArkWebWidget,
polymorphic_identity='video_widget'
)
---
However, when I run this I get an error:
...
File
C:\ark\env_x64\lib\site-packages\sqlalchemy-0.6.2-py2.6.egg\s
qlalchemy\o
rm\__init__.py, line 818, in mapper
return Mapper(class_, local_table, *args, **params)
File
C:\ark\env_x64\lib\site-packages\sqlalchemy-0.6.2-py2.6.egg\s
qlalchemy\o
rm\mapper.py, line 207, in __init__
self._configure_inheritance()
File
C:\ark\env_x64\lib\site-packages\sqlalchemy-0.6.2-py2.6.egg\s
qlalchemy\o
rm\mapper.py, line 231, in _configure_inheritance
(self.class_.__name__, self.inherits.class_.__name__))
sqlalchemy.exc.ArgumentError: Class 'ArkWebVideoWidget' does
not inherit from 'A
rkWebWidget'
And I'm really not sure what I've done wrong, it seems ok based on
what is written in the docs?
Any pointers much appreciated.
Jules
I think the error message is quite explicit - you need to make your
ArkWebVideoWidget class inherit from ArkWebWidget. At the moment, it
inherits from 'object'.
http://www.sqlalchemy.org/docs/mappers.html#mapping-class-inheritance-hi
erarchies
Notice that the Manager and Engineer classes both inherit from Employee.
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 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.