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.


Reply via email to