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