[storm] Update or add pattern with Storm

Brad Allen ballen at zeomega.com
Fri Nov 7 20:17:43 GMT 2008


On Sun, Nov 2, 2008 at 11:25 AM, Jamu Kakar <jkakar at canonical.com> wrote:

> You can use ResultSet.set to run an update without invoking object
> creation and caching behaviour:
>
> result = store.find(Customer, Customer.id=123)
> result.set(last_name=u"Sparrow-Hawk")
>
> If Store.find returns many rows, ResultSet.set will run an UPDATE
> that affects all of them.
>
>
I could see how that could come in handy sometimes, but what about cases
where you have the primary key available and you still want to create that
Customer instance in such a way that it will generate an update statement
when flushed?

In my case, I have a local cache (a Python dict) mapping one kind of id to
another. This turns out to be faster in some situations than having doing a
lot of individual select statements.

My logic for determining insert/update is tied to whether an id is found in
that dict cache. If the key isn't found, I create a new instance of the
Storm class (such as Customer), but if is not found, I'd like to create a
similar object in 'update mode'...or at least, I'd like to. That would help
prevent duplicate code populating the same columns for both inserts and
updates.


-- 
ZeOmega
Open Minds' Open Solutions
3010 Gaylord Parkway, Ste. 210
Frisco TX, 75034
http://www.zeomega.com

Brad Allen
214-618-9880 (ext. 8006)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/storm/attachments/20081107/e1cdd334/attachment.htm 


More information about the storm mailing list