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.