Can't you just add an autoincrementing integer primary key (surrogate key)? or even a field to store a uuid
On Fri, Jan 7, 2011 at 10:39 AM, Steve Kieu <[email protected]> wrote: > Hi there, > > Yes you are right - The table should have the compose key as unique but > VirtualMart does not do it - and imposing it cause problem. > > Thank you very much for your help, I highly appreciated it and learned > another experience with storm :-) > > Cheers, > > > > > > On Fri, Jan 7, 2011 at 9:19 AM, Steve Kieu <[email protected]>wrote: > >> >> I have thought about a case - if the compose primary key is *not* actually >> unique in the db it may cause the problem >> >> so I will try your idea tonight (I am at work now ) to see if it gets >> fixed, probably have to change the logic there ) >> >> Thanks >> >> >> >> On Fri, Jan 7, 2011 at 9:13 AM, Steve Kieu <[email protected]>wrote: >> >>> I think (from reading storm doc somewhere) I can use a unique compose key >>> to tell storm that it can be used as primary tuple in get function. In fact >>> I used this in various other scripts which runs fine. >>> >>> If this is the problem it does not explain why everything is working - >>> that is I can print out all Product, etc inside the find tuple - I can even >>> create new record for the ProductDiscountHistory fine. Bad thing *only* >>> happen when I change the product_discount_id of the Product to use the new >>> discount. >>> >>> I tried to use find in getone method - no change >>> >>> Tried to invalidate the pt after saving the id key, then get the Product >>> using that id key and change its product_discount_id, - no change >>> >>> Enable DEBUG in storm and does not print any usefull information - just >>> the last SQL statement as normal and boom - error >>> >>> Nevertheless I will try your suggestion tonight but I strongly believe it >>> does not solve the problem. It happens with both python version 2.7.1 and >>> Ubuntu lucid stock python (2.6.x) so unlikely it is python GC problem >>> >>> >>> >>> Cheers, >>> >>> >>> >>> >>> On Fri, Jan 7, 2011 at 6:00 AM, Gerdus van Zyl >>> <[email protected]>wrote: >>> >>>> in ProductDiscount >>>> you have both: >>>> __storm_primary__ = 'amount', 'is_percent', 'start_date' >>>> and >>>> id = Int(name='discount_id', primary=True) >>>> >>>> I don't think that you can have two definition of the primary key that >>>> are different; >>>> >>>> and then in ProductDiscount.getone >>>> you use >>>> one = store.get(ProductDiscount, (amount, is_percent, start_date) ) >>>> according to me you need to use find >>>> >>>> >>>> On Thu, Jan 6, 2011 at 3:12 PM, Steve Kieu <[email protected]>wrote: >>>> >>>>> Hello, >>>>> >>>>> I have a simple script (attached to this email )- and evrytime I run, i >>>>> got >>>>> >>>>> >>>>> ste...@lenovo:~/hang-hieu-uc/python$ python bulk_price_update.py >>>>> Number of record: 202 >>>>> /usr/lib/python2.6/dist-packages/storm/database.py:342: Warning: Data >>>>> truncated for column 'amount' at row 1 >>>>> return function(*args, **kwargs) >>>>> Traceback (most recent call last): >>>>> File "bulk_price_update.py", line 137, in <module> >>>>> process() >>>>> File "bulk_price_update.py", line 129, in process >>>>> new_pt.product_discount_id = new_pd.id; store.flush() >>>>> File "/usr/lib/python2.6/dist-packages/storm/properties.py", line 60, >>>>> in __get__ >>>>> return obj_info.variables[column].get() >>>>> File "/usr/lib/python2.6/dist-packages/storm/variables.py", line 178, >>>>> in get >>>>> self.event.emit("resolve-lazy-value", self, self._lazy_value) >>>>> File "/usr/lib/python2.6/dist-packages/storm/event.py", line 53, in >>>>> emit >>>>> if callback(owner, *(args+data)) is False: >>>>> File "/usr/lib/python2.6/dist-packages/storm/store.py", line 891, in >>>>> _resolve_lazy_value >>>>> result, result.get_one()) >>>>> File "/usr/lib/python2.6/dist-packages/storm/store.py", line 746, in >>>>> _set_values >>>>> raise LostObjectError("Can't obtain values from the database " >>>>> storm.exceptions.LostObjectError: Can't obtain values from the database >>>>> (object got removed?) >>>>> >>>>> I am stuck at new idea to fix it, please help >>>>> >>>>> If I do not modify the product_discount_id of a product then it printed >>>>> values fine and create in the history table fine. First I directly modify >>>>> the pt object, but then try to get a product again using pt.id, >>>>> however it does not help in both cases. >>>>> >>>>> The DB is VirutalMart DB if it helps >>>>> >>>>> Many thanks in advance >>>>> >>>>> >>>>> >>>>> -- >>>>> Steve Kieu >>>>> >>>>> -- >>>>> storm mailing list >>>>> [email protected] >>>>> Modify settings or unsubscribe at: >>>>> https://lists.ubuntu.com/mailman/listinfo/storm >>>>> >>>>> >>>> >>>> >>>> -- >>>> Gerdus van Zyl >>>> http://about.me/gerdus >>>> >>> >>> >>> >>> -- >>> Steve Kieu >>> >> >> >> >> -- >> Steve Kieu >> > > > > -- > Steve Kieu > -- Gerdus van Zyl http://about.me/gerdus
-- storm mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/storm
