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 <[email protected]> wrote:
> can you pass along a short code example? I can try to edit it.
>
>
> On Jul 31, 2013, at 10:27 AM, notedit <[email protected]> wrote:
>
>> yes i have readed the doc, but i just can not make it work with ARRAY.
>>
>>
>> 2013/7/31 Michael Bayer <[email protected]>
>> 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 <[email protected]> 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 <[email protected]>
>>> see
>>> http://docs.sqlalchemy.org/en/rel_0_8/changelog/migration_08.html#mutabletype
>>>
>>>
>>> On Jul 31, 2013, at 4:02 AM, notedit <[email protected]> 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 [email protected].
>>>>
>>>> To post to this group, send email to [email protected].
>>>> 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 [email protected].
>>> To post to this group, send email to [email protected].
>>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>
signature.asc
Description: Message signed with OpenPGP using GPGMail
