your metaclass must derive from the DeclarativeMeta class. Also, I disagree that you need this metaclass, what you're trying to do is very easy using mixins, which are supported in version 0.6: http://docs.sqlalchemy.org/en/rel_0_6/orm/extensions/declarative.html#mixing-in-columns
On Jul 3, 2013, at 12:44 AM, Ven Karri <praveen.venk...@gmail.com> wrote: > I use: Python 2.6 and sqlalchemy 0.6.1 > > This is what I am trying to do: > > from sqlalchemy.types import ( > Integer, > String, > Boolean > ) > from sqlalchemy.ext.declarative import declarative_base > > Base = declarative_base() > > class SampleMeta(type): > def __new__(cls, name, bases, attrs): > attrs.update({ 'id': Column('Id', Integer, primary_key=True), > 'name': Column('Name', String), > 'description': Column('Description', String), > 'is_active': Column('IsActive', Boolean) > }) > return super(SampleMeta, cls).__new__(cls, name, bases, attrs) > > class Sample(Base): > __tablename__ = 'Sample' > __table_args__ = {'useexisting': True} > __metaclass__ = SampleMeta > > def __init__(self, id, name, description, is_active): > self.id = id > self.name = name > self.description = description > self.is_active = is_active > > def __repr__(self): > return "<(%d, '%s', '%s', %r)>" % (self.id, self.name, > self.description, self.isactive) > > And the error I am getting is this: > > TypeError: Error when calling the metaclass bases > metaclass conflict: the metaclass of a derived class must be a > (non-strict) subclass of the metaclasses of all its bases > > Now, if I do the same thing above by using > > class Sample(object) > > instead of > > class Sample(Base) > > it works absolutely fine. > > I need to update the attributes of the class dynamically. So, I will be using > dynamic attribute and column names. And I need the above piece code to work > in order to be able to get there. > > **Please help** > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/groups/opt_out. > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.