this is all patched in 1.2, your original test works too.

The fix here is a little too intricate for 1.1 right now as this is a very long-standing bug (goes back to 0.7 at least and probably further) and 1.1 is getting near maintenance mode.


On 05/10/2017 01:48 PM, mike bayer wrote:
nevermind, the issue is at

https://bitbucket.org/zzzeek/sqlalchemy/issues/3984/deferred-column_property-gets-set-to

the fix is not as obvious as that, that particular check is assuming a column_property() where its value was never present in __dict__ in the first place, so it needs to be marked "expired".


On 05/10/2017 01:38 PM, Kent wrote:
The regular columns seem to expire and reload properly without issue. (Is that what you're asking?)

You want me to submit a PR changing:

if p.expire_on_flush or p.key*not*in state.dict

to

if p.expire_on_flush*and*p.key in state.dict*
*

?

(If so, which branch?)


On Wednesday, May 10, 2017 at 12:55:45 PM UTC-4, Mike Bayer wrote:

so you can confirm this is only for custom SQL + column_property(), not a regular column right? definitely a bug for 1.2 if you can post it up


    On 05/10/2017 12:37 PM, Kent wrote:
     > I'm thinking that should be
     > *"if p.expire_on_flush and p.key in state.dict"*
     >
     >
     > On Wednesday, May 10, 2017 at 11:35:30 AM UTC-4, Kent wrote:
     >
     >     deferred column_properties may be less-efficient subquery
    selects
> (and thus marked deferred). When a flush occurs that updates an
     >     object, any read-only column_properties are marked as
    expired, even
     >     if they weren't even loaded.  This means if the object needs
    to be
     >     refreshed, all these deferred column properties are loaded.
     >
     >     We probably want the behavior to only expire read-only
    attributes
     >     that were actually loaded, right?
     >
     >     See attached script.  This behavior is as of 1.1.1
     >
     >     Thoughts?
     >
     >
     > --
     > 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
    <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+...@googlegroups.com <javascript:>
     > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>.
     > To post to this group, send email to sqlal...@googlegroups.com
    <javascript:>
     > <mailto:sqlal...@googlegroups.com <javascript:>>.
     > Visit this group at https://groups.google.com/group/sqlalchemy
    <https://groups.google.com/group/sqlalchemy>.
     > For more options, visit https://groups.google.com/d/optout
    <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 <mailto:sqlalchemy+unsubscr...@googlegroups.com>. To post to this group, send email to sqlalchemy@googlegroups.com <mailto: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.

Reply via email to