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.


Reply via email to