Query PyTables Nested Columns

pytables, python

Solution

You have to create variables to be used inside the condition string. One option is to define a variable dictionary:

table.readWhere('rId==0', condvars={'rId': table.cols.route.master.id})

Another option is to define local variables for the columns to be used in the condition.

rId = table.cols.route.master.id
table.readWhere('rId==0')

As this pollutes the namespace, I recommend you to create a function to wrap the code. I tried to reference the column itself, but it seems the interpreter fetches the whole dataset before throwing a NameError.

table.readWhere('table.cols.route.master.id==0') # DOES NOT WORK

More info on the where() method in the library reference.

Problem

I have a table with a nested table column, route. Beneath that are two other nested datatypes, master and slave that both have an integer id and string type field. I would like to run something like table.readWhere('route/master/id==0') but I get "variable `route` refers to a nested column, not allowed in conditions" Is there a method to query a nested datatype in pytables?

Original source