Modifying a large table (Row.update)
(self)
| 4651 | self.assertEqual(table.nrows, 4) |
| 4652 | |
| 4653 | def test08(self): |
| 4654 | """Modifying a large table (Row.update)""" |
| 4655 | |
| 4656 | # Create a new table: |
| 4657 | table = self.h5file.create_table(self.h5file.root, "recarray", Rec) |
| 4658 | table.nrowsinbuf = self.buffersize # set buffer value |
| 4659 | |
| 4660 | nrows = 100 |
| 4661 | # append new rows |
| 4662 | row = table.row |
| 4663 | for i in range(nrows): |
| 4664 | row["col1"] = i - 1 |
| 4665 | row["col2"] = "a" + str(i - 1) |
| 4666 | row["col3"] = -1.0 |
| 4667 | row.append() |
| 4668 | table.flush() |
| 4669 | |
| 4670 | # Modify all the rows |
| 4671 | for row in table: |
| 4672 | row["col1"] = row.nrow |
| 4673 | row["col2"] = "b" + str(row.nrow) |
| 4674 | row["col3"] = 0.0 |
| 4675 | row.update() |
| 4676 | |
| 4677 | # Create the modified recarray |
| 4678 | r1 = np.rec.array( |
| 4679 | None, shape=nrows, formats="i4,S3,f8", names="col1,col2,col3" |
| 4680 | ) |
| 4681 | for i in range(nrows): |
| 4682 | r1["col1"][i] = i |
| 4683 | r1["col2"][i] = "b" + str(i) |
| 4684 | r1["col3"][i] = 0.0 |
| 4685 | # Read the modified table |
| 4686 | if self.reopen: |
| 4687 | self._reopen() |
| 4688 | table = self.h5file.root.recarray |
| 4689 | table.nrowsinbuf = self.buffersize # set buffer value |
| 4690 | r2 = table.read() |
| 4691 | if common.verbose: |
| 4692 | print("Original table-->", repr(r2)) |
| 4693 | print("Should look like-->", repr(r1)) |
| 4694 | self.assertEqual(r1.tobytes(), r2.tobytes()) |
| 4695 | self.assertEqual(table.nrows, nrows) |
| 4696 | |
| 4697 | def test08b(self): |
| 4698 | """Setting values on a large table without calling Row.update""" |