assembling the test was a good exercise as I can see that the problem
exists with 0.5.3  but not against 0.5.4p2 or a checked out copy of
svn.

I logged this ticket but more for reference/tracking than anything
else.
http://www.sqlalchemy.org/trac/ticket/1464


pjjH


On Jul 10, 1:14 pm, "phrrn...@googlemail.com"
<phrrn...@googlemail.com> wrote:
> Sure. I'll work on the distillation after lunch.  It is not that the
> UPDATE is broken, per se, it is more that update should not be called.
> The code below works OK on an empty database but fails on subsequent
> runs when pre-existing data is found.
>
> tmp = [
>     { 'md5id': 32, 'scenario': 100, 'value': 21. },
>     { 'md5id': 57, 'scenario': 200, 'value': -3. },
>     ]
>
> for i in tmp:
>     o = ModelPresentValue()
>     o.md5id    = i['md5id']
>     o.scenario = i['scenario']
>     o.value    = i['value']
>     session.merge(o)
>
> On Jul 10, 12:21 pm, "Michael Bayer" <mike...@zzzcomputing.com> wrote:
>
> > well can you distill it into a small test case...it seems suspect that
> > "UPDATE" would break.  more likely is, __init__ doesn't work correctly or
> > perhaps history events fail.
>
> > phrrn...@googlemail.com wrote:
>
> > > I found the problem: it is with the instrumentation_finders stuff you
> > > helped us with months ago (see below). The problem can be reproduced
> > > with this:
>
> > > class DummyMapperExtension(MapperExtension):
> > >     pass
>
> > > mapper(ModelPresentValue, model_present_value,
> > > extension=DummyMapperExtension())
>
> > > If the instrumentation hook is put in and you use a mapper extension
> > > (even a dummy one) then the session update code stops working.
>
> > > instrumentation + mapper_extension => fail
> > > instrumentation only                        => works
> > > mapper_extension only                   => works
>
> > > I tried debugging the instrumentation_find stuff before but didn't
> > > make much progress. I will open up a ticket on trac (if there isn't
> > > one there already)
>
> > > pjjH
>
> > > # Set docstrings of attributes to the empty string, in order to avoid
> > > # ugly-looking stuff that would otherwise appear as default.
> > > class AttachNotesAsDocstring(interfaces.InstrumentationManager):
> > >     def instrument_attribute(self, class_, key, attr):
> > >         if isinstance(attr.property, properties.ColumnProperty):
> > >              if hasattr(attr.property.columns[0], 'info'):
> > >                  attr.__doc__ = attr.property.columns[0].info.get
> > > ('notes')
> > >              else:
> > >                  attr.__doc__ = ''
>
> > > # We get a weird error from SQLAlchemy when we have customized
> > > # instrumentation and try to cog a file:
> > > #
> > > #    AttributeError: 'ColumnProperty' object has no attribute
> > > 'strategy'
> > > #
> > > # As a workaround, we do not attempt to do any fancy instrumentation
> > > # if the cog module has been imported.
> > > if not 'cog' in sys.modules:
> > >     sqlalchemy.orm.attributes.instrumentation_finders.append(
> > >         lambda cls: AttachNotesAsDocstring)
--~--~---------~--~----~------------~-------~--~----~
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 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to