Modifying selected values on a large table
(self)
| 4739 | self.assertEqual(table.nrows, nrows) |
| 4740 | |
| 4741 | def test09(self): |
| 4742 | """Modifying selected values on a large table""" |
| 4743 | |
| 4744 | # Create a new table: |
| 4745 | table = self.h5file.create_table(self.h5file.root, "recarray", Rec) |
| 4746 | table.nrowsinbuf = self.buffersize # set buffer value |
| 4747 | |
| 4748 | nrows = 100 |
| 4749 | # append new rows |
| 4750 | row = table.row |
| 4751 | for i in range(nrows): |
| 4752 | row["col1"] = i - 1 |
| 4753 | row["col2"] = "a" + str(i - 1) |
| 4754 | row["col3"] = -1.0 |
| 4755 | row.append() |
| 4756 | table.flush() |
| 4757 | |
| 4758 | # Modify selected rows |
| 4759 | for row in table.where("col1 > nrows-3"): |
| 4760 | row["col1"] = row.nrow |
| 4761 | row["col2"] = "b" + str(row.nrow) |
| 4762 | row["col3"] = 0.0 |
| 4763 | row.update() |
| 4764 | |
| 4765 | # Create the modified recarray |
| 4766 | r1 = np.rec.array( |
| 4767 | None, shape=nrows, formats="i4,S3,f8", names="col1,col2,col3" |
| 4768 | ) |
| 4769 | for i in range(nrows): |
| 4770 | r1["col1"][i] = i - 1 |
| 4771 | r1["col2"][i] = "a" + str(i - 1) |
| 4772 | r1["col3"][i] = -1.0 |
| 4773 | # modify just the last line |
| 4774 | r1["col1"][i] = i |
| 4775 | r1["col2"][i] = "b" + str(i) |
| 4776 | r1["col3"][i] = 0.0 |
| 4777 | |
| 4778 | # Read the modified table |
| 4779 | if self.reopen: |
| 4780 | self._reopen() |
| 4781 | table = self.h5file.root.recarray |
| 4782 | table.nrowsinbuf = self.buffersize # set buffer value |
| 4783 | r2 = table.read() |
| 4784 | if common.verbose: |
| 4785 | print("Original table-->", repr(r2)) |
| 4786 | print("Should look like-->", repr(r1)) |
| 4787 | self.assertEqual(r1.tobytes(), r2.tobytes()) |
| 4788 | self.assertEqual(table.nrows, nrows) |
| 4789 | |
| 4790 | def test09b(self): |
| 4791 | """Modifying selected values on a large table (alternate values)""" |