我有一个带有嵌套表列的表,路由。下面是另外两种嵌套数据类型,即主数据类型和从数据类型,它们都具有整数id和字符串类型字段。
我想运行类似于table.readWhere(‘table.readWhere/master/id==0’)之类的内容,但是我得到了“变量引用了一个嵌套列,在条件”中是不允许的
在pytable中是否有查询嵌套数据类型的方法?
发布于 2013-05-31 14:18:47
您必须创建要在条件字符串中使用的变量。一种选择是定义变量字典:
table.readWhere('rId==0', condvars={'rId': table.cols.route.master.id})另一个选项是为在条件中使用的列定义局部变量。
rId = table.cols.route.master.id
table.readWhere('rId==0')由于这会污染命名空间,我建议您创建一个函数来包装代码。我试图引用列本身,但似乎解释器在抛出NameError之前获取整个数据集。
table.readWhere('table.cols.route.master.id==0') # DOES NOT WORK有关图书馆参考资料中where()方法的更多信息。
发布于 2018-06-20 02:12:14
在街街回答的基础上,下面是一种在构造查询时访问表中所有嵌套列的快速方法
condvars = {k.replace('/', '__'): v for k, v in table.colinstances.items()}
result = table.read_where('route__master__id == 0', condvars=condvars)table.colinstances返回一个平面dict,其键是表中所有列(包括嵌套列)的斜杠分隔路径,其值是位于该路径上的PyTables Col类的实例。您不能在查询中使用斜杠分隔的路径,但是如果用Python标识符中允许的其他分隔符替换(在本例中,我选择了双下划线),那么一切都正常。如果你愿意的话,你可以选择其他的分隔符。
https://stackoverflow.com/questions/15641350
复制相似问题