On Mon, Mar 5, 2018 at 11:40 AM, Mike Bayer <[email protected]> wrote: > On Mon, Mar 5, 2018 at 1:35 AM, Tolstov Sergey <[email protected]> wrote: >> On my project, i use __getattr__ for adding column deifinition to object >> class >> Such as: >> >> def __getattr__(self,attr): >> ... >> my_load_function(...) >> session.refresh(self) >> ... >> return getattr(self,attr) >> > > I realized you are actually adding a new mapped attribute as the > __getattr__ is called. This is a very strange pattern.
note this pattern is entirely non-threadsafe. if you have multiple threads you need to use mutexing and double-checks for the attribute you are looking for. > > >> It works, but refresh loses changes on this object. I cannot flush, because >> it used for another function. > > do session.expire() on the attribute instead. the getattr() will load it. > > > >> >> I found solution >> session.refresh(self, attribute_names=['attr_name']) >> >> But it will raise exception >> sqlalchemy.exc.InvalidRequestError: No column-based properties specified for >> refresh operation. Use session.expire() to reload collections and related >> items.] >> >> I already tried use session.expire(self) and session.expire(self, >> attribute_names=['attr_name'])) before and after refresh, but nothing >> changed >> >> Can someone help me with this eror? >> >> -- >> 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 [email protected]. >> To post to this group, send email to [email protected]. >> 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
