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.