Hi, I have this declarative table model: http://paste.pound-python.org/show/9857/ ========================================================== from sqlalchemy import Column, String, ForeignKeyConstraint, Integer from sqlalchemy.ext.declarative import declarative_base, declared_attr
class TableName(object):
@declared_attr
def __tablename__(cls):
return cls.__name__
Base=declarative_base(cls=TableName)
class TMixin(object):
@declared_attr
def user(cls):
return Column(String, primary_key=True)
@declared_attr
def timestamp(cls):
return Column(Integer, autoincrement=False, primary_key=True)
class Timeline(TMixin, Base):
snaptype = Column(Integer, primary_key=True, autoincrement=False)
__mapper_args__ = {'polymorphic_on': snaptype}
class CMixin(TMixin):
@declared_attr
def __table_args__(cls):
return (ForeignKeyConstraint(
['user', 'timestamp'],
['Timeline.user', 'Timeline.timestamp']),)
@declared_attr
def __mapper_args__(cls):
return {'polymorphic_identity': CMixin.__subclasses__().index(cls)}
class C(CMixin, Timeline):
pass
==========================================================
But on running this code, I get:
==========================================================
Traceback (most recent call last):
File "schema.py", line 45, in <module>
class C(CMixin, Timeline):
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/ext/declarative.py",
line 1129, in __init__
_as_declarative(cls, classname, cls.__dict__)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/ext/declarative.py",
line 1027, in _as_declarative
**table_kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line
265, in __new__
table._init(name, metadata, *args, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line
340, in _init
self._init_items(*args)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 64,
in _init_items
item._set_parent_with_dispatch(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/events.py", line
227, in _set_parent_with_dispatch
self._set_parent(parent)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/schema.py", line
2010, in _set_parent
col = table.c[col]
File "/usr/local/lib/python2.7/dist-
packages/sqlalchemy/util/_collections.py", line 88, in __getitem__
return self._data[key]
KeyError: 'user'
==========================================================
I don't get any error if C isn't inheriting from Timeline (ie, no joint-table
inheritance). What could be wrong here?
sqlalchemy.__version__ = '0.7.1'
And thanks in advance.
--
Fayaz Yusuf Khan
Cloud developer and designer
Dexetra SS, Kochi, India
fayaz.yusuf.khan_AT_gmail_DOT_com
fayaz_AT_dexetra_DOT_com
+91-9746-830-823
from sqlalchemy import Column, String, ForeignKeyConstraint, Integer
from sqlalchemy.ext.declarative import declarative_base, declared_attr
class TableName(object):
@declared_attr
def __tablename__(cls):
return cls.__name__
Base=declarative_base(cls=TableName)
class TMixin(object):
@declared_attr
def user(cls):
return Column(String, primary_key=True)
@declared_attr
def timestamp(cls):
return Column(Integer, autoincrement=False, primary_key=True)
class Timeline(TMixin, Base):
snaptype = Column(Integer, primary_key=True, autoincrement=False)
class CMixin(TMixin):
@declared_attr
def __table_args__(cls):
return (ForeignKeyConstraint(
['user', 'timestamp'],
['Timeline.user', 'Timeline.timestamp']),)
class C(CMixin, Base):
pass
signature.asc
Description: This is a digitally signed message part.
