Another question surrounding this:

in persistence.py:

def _finalize_insert_update_commands(...)
        ....
        if mapper._readonly_props:
            readonly = state.unmodified_intersection(
                [p.key for p in mapper._readonly_props
                    if p.expire_on_flush or p.key not in state.dict]
            )
            if readonly:
                state._expire_attributes(state.dict, readonly)


I'm confused by "or p.key *not *in state.dict"... wouldn't we want to 
expire the ones that *are *in state.dict?

Wouldn't we want   

"or p.key in state.dict"

?

Just wanted someone to look that code over again.


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 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