Alright, cool. All I needed (and I say that rather loosely) was the
behavior on columns, anyway. Thanks for the quick response, version .4
has exceeded my expectations for sure :)

On Oct 31, 3:21 pm, Michael Bayer <[EMAIL PROTECTED]> wrote:
> OK.  for object-holding relations, i.e. using relation(), the same
> rules apply - use dynamic relations or lazy=None.   theres events
> that occur when you assign to a relation-holding attribute, like
> backreferences, cascades, and setting "orphan" flags, so in that case
> the "load" of the former value is fairly important...while it may be
> able to be improved, disabling the behavior for just scalar relation
> () attributes (i.e. many-to-one) still fails lots of tests so this
> adjustment would require a little bit of effort to get right.
>
> for column-based attributes, the load of the "deferred" value when
> assigning is not super-critical; while it does get "compared" to the
> new version, if you're assigning to the attribute its probably more
> the "right thing" to just unconditionally write the new value without
> bothering to load the old value.  so ive made that change in r3695.
> if you try out the trunk your regular column-deferred attributes
> shouldn't be loading the old value when you assign a new value.
>
> On Oct 31, 2007, at 2:36 PM, Michael Bayer wrote:
>
>
>
> > actually, let me think some more about this, i might be able to
> > adjust this behavior for column-based attributes.
>
> > On Oct 31, 2007, at 2:28 PM, Michael Bayer wrote:
>
> >> the reason it fetches the existing value is to do a comparison, so it
> >> knows whether or not to flush that attribute (or for collections, to
> >> determine specifically whats changed).   if youre dealing with a
> >> relation(), you can use a dynamic relation which will eliminate any
> >> loading when setting (see the docs), or setting lazy=None will also
> >> eliminate any loading from occuring.  for a regular column attribute,
> >> theres no "noload" option for that currently, youd have to issue an
> >> UPDATE manually.  column-level noloads are conceivably possible as a
> >> feature but id probably express it as "unconditonal-write", since
> >> youd still want a get() operation to access the value, correct ?
>
> >> On Oct 31, 2007, at 12:47 PM, Chris M wrote:
>
> >>> I have a table with a deferred column. I want to fetch an object
> >>> from
> >>> the database and update this column, but have no use for the actual
> >>> value of it. However, it seems when I change the value of the column
> >>> it first fetches the value for it and then sets it before doing the
> >>> update. Is there any way to stop this behavior? It's expensive
> >>> especially for updating columns that are relations, as it fetches
> >>> the
> >>> deferred column, then the row it references, then sets it before
> >>> updating.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to