我想通过匹配离散值列表的列在HDF5文件中进行选择。但是,据说我的查询包含几十个值,可能包含几个不同的键列,因此我不想使用内核超长查询,例如:
((key1=="value1")|(key1=="value2")) & ((key2=="value3")|(key1=="value4"))
但是,为了速度考虑,它仍然必须以某种方式在内核中完成(我也在索引列并保持我的巨大表排序)。这是一些帮助代码,我匹配一个单独的值:
import string
import random
import tables as pt
class KeyValue(pt.IsDescription):
key = pt.StringCol(itemsize=30, dflt=" ", pos=0)
value = pt.UInt16Col(dflt=0, pos=1)
file = pt.open_file("test.hdf5", "w", title=title)
m = file.create_table("/", "test", KeyValue)
for j in range(20):
values = []
for i in range(100000):
key = "".join(random.sample(string.ascii_uppercase, 5))
value = random.randint(0, 1000000)
values.append((key, value))
m.append(values)
rows = file.root.test.read_where('key == b"AAAA"')
file.close()
答案 0 :(得分:0)
假设您有一个要选择的值列表,可以使用字符串连接生成查询字符串:
"&".join(["(key={0})".format(value) for value in values])