在PyTables中正确查询

时间:2014-03-07 09:56:27

标签: python performance pytables

我正在使用Python 2.7,并尝试执行PyTables查询:

#Here the condition
selectedIndex = [1,6,7,9]
condition = 'IndexColumn in selectedIndex'

#here the query
for x1 in tab.where(condition,selectedIndex):
   ...
   ...
   ...

我得到了:

TypeError: argument of type 'VariableNode' is not iterable

从有关pytables的文档中,我试图使用它:

Table.where(condition, condvars=None, start=None, stop=None, step=None)

那:

condition = 'col1 == "AAAA"'

for record in table.where(condition):  # TypeError in Python3
    #do something with "record"

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为在你的情况下使用字符串参数进行内核查询的正确方法是:

conditon="(IndexColumn==1)|(IndexColumn==6)|(IndexColumn==7)|(IndexColumn==9)"

和IndexColumn需要是IsDescription类中指定的列的实际名称。我相信python条件“a in b”对Pytablles查询无效

关于你评论的编辑:

"".join(["(IndexColumn==%i)|"%j for j in selectedIndex])[:-1]

应该为您提供正确的查询字符串。