MCPcopy Create free account
hub / github.com/PyTables/PyTables / test08

Method test08

tables/tests/test_tables.py:4653–4695  ·  view source on GitHub ↗

Modifying a large table (Row.update)

(self)

Source from the content-addressed store, hash-verified

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"""

Callers

nothing calls this directly

Calls 6

create_tableMethod · 0.45
appendMethod · 0.45
flushMethod · 0.45
updateMethod · 0.45
_reopenMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected