> > I'm working in a GUI project and use the SQLAlchemy for ORM.
> > Can anyone tell me how to catch a attribute changed event in
> > SQLAlchemy so that application can update the UI automaticly.
> > Thank you.
> >
> > --
> > XUE Can
>
> This may be more of a Python question, because it is not
> specifically related to data persistence.
>
> Mapper Extensions:
> http://www.sqlalchemy.org/docs/adv_datamapping.html#advdatamapping_
>extending can help if you want to catch a hook before a class
> instance is updated in the database.  But if you want to catch the
> moment when the attribute is changed in memory, consider the
> possibility that this is not in sqlalchemy's scope.

All mapped attributes of any class with SA mapper, become 
InstrumentedAttributes, which is a descriptor catching those 
get/set/s. So the exact moment IS catchable, as long as one somehow 
attaches himself on these InstrumentedAttributes __get__/ __set__.

There are 2 types of events here to consider: change coming from 
outside (the UI user typed something) and change coming from inside 
(data loaded from DB).

Changes coming from outside could be catchable via overloading 
__setattr__ and/or InstrumentedAttr's __set__; changes coming from 
inside mostly go via object.__dict__[attrname].

i have implemented such catcher, basicaly it replaces the __dict__ of 
the mapped objects with a class that simulates a dict and gives 
control over set/get/del. beware, it is slow.
see sa2static.py in http://www.sistechnology.com/o2rm/o2rm0224.tar.bz2

i didn't answered before because my needs of the above catcher are far 
more trickier than just UI-event setattr dispatch, so i thought there 
might be something easier way within SA itself.

As i see it, u want Observers that listen to changes in particular 
attributes - or any attributes. 

svil

--~--~---------~--~----~------------~-------~--~----~
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