On Mon, Dec 4, 2017 at 2:18 PM, Olaf <bastien...@gmail.com> wrote: > Hello, > > > > This mail is the continuation of this question: > https://groups.google.com/forum/#!topic/sqlalchemy/Ba7urbeZBqQ > > > > The problem being different, I prefer to open a new topic. > > > > I am currently meeting a problem regarding generic associations and the use > of MutableList associated to the array type of postgres. > > > > I coded two versions of the same case: > > - the first one uses a generic association. The attribute "text" should be a > MutableList but suddenly becomes a "List" during the first commit. The next > changes are therefore not longer detected and the data are not actualized in > the database > > - the second example is a classical relationship. In this case, the > attribute "text" is a MutableList and don't changes during the commits. > Everything works as it should and the data are actualized in the database
this is https://bitbucket.org/zzzeek/sqlalchemy/issues/4141/array-does-not-fire-attachment-events. Please use @declared_attr for now. class Mixin(object): @declared_attr def data(cls): return Column(MutableList.as_mutable(postgresql.ARRAY(String))) > > > > It will be easier to see the problem with the two examples and their output. > > > The examples are attached. > > > > Example 1 - Generic Association Code (don't works as it should): > > > > Output: > > > >>>> > Text before commit 1: ['Rex is a', 'good dog...'] > Type before commit 1: <class 'sqlalchemy.ext.mutable.MutableList'> > Commit 1 > Type after commit 1: <class 'list'> > We append duck sentence : ['Rex is a', 'good dog...', 'but I prefer > ducks.'] > Commit 2 > Text after commit 2 : ['Rex is a', 'good dog...'] >>>> > > > > > Example 2 - Classical relationship (works fine): > > > > Output: > > > >>>> > Text before commit 1: ['Rex is a', 'good dog...'] > Type before commit 1: <class 'sqlalchemy.ext.mutable.MutableList'> > Commit 1 > Type after commit 1: <class 'sqlalchemy.ext.mutable.MutableList'> > We append duck sentence : ['Rex is a', 'good dog...', 'but I prefer > ducks.'] > Commit 2 > Text after commit 2 : ['Rex is a', 'good dog...', 'but I prefer ducks.'] >>>> > > > > > I don't know if it helps but I noticed that the __init__ method of the class > Description doesn't have exactly the same behavior in the two examples: > > > > - in the Generic Association Code example, the "self.text = MutableList()" > in the __init__ method of the class Description is not really important. It > could also be "self.text = []" instead. In all cases, text is a MutableList. > > - in the Classical relationship example, if the __init__ method of the class > Description contains "self.text = MutableList()", the attribute text will be > a MutableList and if the __init__ method contains "self.text = []", it will > be a List. > > > > Does someone have an explanation ? > > > > Thank you ! > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > 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 https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- 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 https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.