A Friday 25 June 2010 19:18:26 Ben Kraft escrigué:
> Hi all,
> 
> I'm having trouble updating pytables rows.  Say I have a H5 table
> "h5t" with several rows.  According to the manual, it seems I should
> be able to call
> 
> h5t[1]['number'] = 3

You are not modifying the table, but just the a numpy object, h5t[1] in 
memory.  Look at this:

In [6]: type(h5t[1])
Out[6]: <type 'numpy.void'>

In order to modify the value, you have several possibilities:

1.- Use `cols` accessor: h5t.cols.number[1] = 3

2.- Use `modifyRows()` method:
    row = h5t[1]
    row['number'] = 3
    h5t.modifyRows(1, rows=[row])

or...

> 
> and the table will set the 'number' record of row 1  to 3 and
> implicitly call row.update.  However, the table/row does not update,
> and h5t[1]['number'] returns 0 (or whatever the initial value was).
> 
> Regardless, calling
> 
> rec = h5t[1]
> rec['number'] = 3
> h5t[1] = [rec]
> 
> seems to force the table to update, and now h5t[1]['number'] returns
> the new value.

...this is a third possibility.

> 
> Am I missing something?  My workaround seems a bit silly, and it's
> probably not guaranteed to work.  I'm aware of row.update(), but I
> don't see any way to call it for a specific table index
> (h5t[1].update(), for example).

HTH,

-- 
Francesc Alted

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Pytables-users mailing list
Pytables-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pytables-users

Reply via email to