首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询PyTables嵌套列

查询PyTables嵌套列
EN

Stack Overflow用户
提问于 2013-03-26 15:45:44
回答 2查看 712关注 0票数 3

我有一个带有嵌套表列的表,路由。下面是另外两种嵌套数据类型,即主数据类型和从数据类型,它们都具有整数id和字符串类型字段。

我想运行类似于table.readWhere(‘table.readWhere/master/id==0’)之类的内容,但是我得到了“变量引用了一个嵌套列,在条件”中是不允许的

在pytable中是否有查询嵌套数据类型的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-31 14:18:47

您必须创建要在条件字符串中使用的变量。一种选择是定义变量字典:

代码语言:javascript
复制
table.readWhere('rId==0', condvars={'rId': table.cols.route.master.id})

另一个选项是为在条件中使用的列定义局部变量。

代码语言:javascript
复制
rId = table.cols.route.master.id
table.readWhere('rId==0')

由于这会污染命名空间,我建议您创建一个函数来包装代码。我试图引用列本身,但似乎解释器在抛出NameError之前获取整个数据集。

代码语言:javascript
复制
table.readWhere('table.cols.route.master.id==0') # DOES NOT WORK

有关图书馆参考资料中where()方法的更多信息。

票数 6
EN

Stack Overflow用户

发布于 2018-06-20 02:12:14

街街回答的基础上,下面是一种在构造查询时访问表中所有嵌套列的快速方法

代码语言:javascript
复制
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标识符中允许的其他分隔符替换(在本例中,我选择了双下划线),那么一切都正常。如果你愿意的话,你可以选择其他的分隔符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15641350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档