Hi,

I'm finally adapting our codebase to SqlAlchemy 0.6, and I've found a
couple of breaking changes that are not documented in
http://www.sqlalchemy.org/trac/wiki/06Migration

First, ResultProxy.keys is now a method returning a list, not a list-
valued attribute, so expressions like k in result.keys or
result.keys.index no longer work; the keys references must be changed
to method invocations.

Second, DeclarativeMeta.__init__ now ignores columns defined in the
dict_ passed to it (by a subclass metaclass constructor), using
cls.__dict__ instead. This seems to be deliberate, the log message on
commit 6055 is “DeclarativeMeta exclusively uses cls.__dict__ (not
dict_)”. But it breaks my use case; we have subclassed the metaclass
to add two columns that are common to a set of entities of ours:

class DimensionValueMeta(DeclarativeMeta):
    def __init__(cls, classname, bases, dict_):
        if not dict_.has_key('__table__'):
            dict_['id'] = Column(Integer, primary_key=True)
            dict_['value'] = Column(UnicodeText, nullable=False,
unique=True)
        DeclarativeMeta.__init__(cls, classname, bases, dict_)

I am told that just assigning cls.id = Column(...) and cls.value =
Column(...) will work, which is cleaner anyway.

I've added draft explanations of these two breaking changes to
http://www.sqlalchemy.org/trac/wiki/06Migration (last two changes by
“guest”) — please review and fix whatever I got wrong.

- Gulli

-- 
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.

Reply via email to