here you go, note MutableList is copied from MutableDict except adapted for 
lists, works as advertised (you'd need to add other list methods besides 
append()):

from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.mutable import Mutable
from sqlalchemy.dialects.postgresql import ARRAY


Base = declarative_base()

class MutableList(Mutable, list):
    def append(self, value):
        list.append(self, value)
        self.changed()

    @classmethod
    def coerce(cls, key, value):
        if not isinstance(value, MutableList):
            if isinstance(value, list):
                return MutableList(value)
            return Mutable.coerce(key, value)
        else:
            return value


class A(Base):
    __tablename__ = 'a'

    id = Column(Integer, primary_key=True)
    data = Column(MutableList.as_mutable(ARRAY(Integer)))

engine = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)

s = Session(engine)

a1 = A(data=[1, 2, 3])
s.add(a1)
s.commit()

a1.data.append(4)
a1.data.append(5)
a1.data.append(6)

s.commit()

assert a1.data == [1, 2, 3, 4, 5, 6]




On Jul 31, 2013, at 10:39 AM, Michael Bayer <mike...@zzzcomputing.com> wrote:

> can you pass along a short code example?   I can try to edit it.
> 
> 
> On Jul 31, 2013, at 10:27 AM, notedit <note...@gmail.com> wrote:
> 
>> yes  i have readed the doc,  but i just can not make it work with ARRAY.
>> 
>> 
>> 2013/7/31 Michael Bayer <mike...@zzzcomputing.com>
>> I dont' have an example specific to ARRAY handy, did you read the 
>> documentation at 
>> http://docs.sqlalchemy.org/en/rel_0_8/orm/extensions/mutable.html ?
>> 
>> 
>> On Jul 31, 2013, at 10:12 AM, notedit <note...@gmail.com> wrote:
>> 
>>> yes  i have noticed these.  but i still do not know how to use these with 
>>> array.
>>> can you give me some example code?
>>> 
>>> 
>>> 2013/7/31 Michael Bayer <mike...@zzzcomputing.com>
>>> see 
>>> http://docs.sqlalchemy.org/en/rel_0_8/changelog/migration_08.html#mutabletype
>>> 
>>> 
>>> On Jul 31, 2013, at 4:02 AM, notedit <note...@gmail.com> wrote:
>>> 
>>>> hi,
>>>> 
>>>> i just come accross this,  i use sqlalchemy 0.7.8 before  these all work. 
>>>> when i update to 0.8.2  this does not work.
>>>> 
>>>> -- 
>>>> 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.
>>>  
>>>  
>> 
>> 
>> 
>> -- 
>> 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.
>>  
>>  
> 

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to