Cool. Thanks for taking a look at it. pjjH
On Jul 10, 4:02 pm, "Michael Bayer" <mike...@zzzcomputing.com> wrote: > phrrn...@googlemail.com wrote: > > > 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 > > yah that had been resolved by 0.5.4 but in my poking around to understand > it I found a not totally related bug related to pickling which I just > fixed in r6100. > > > > > 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 -~----------~----~----~----~------~----~------~--~---