有没有pytable相当于sql'like'和'not like'

时间:2014-01-08 13:14:53

标签: sql pytables

我在pytable中创建了一个表。

我需要pytables中的等效条件

从table_name中选择*,其中col_name就像'%new%' select * from table_name其中col_name类似'new%'

如果列是整数数据类型,还有如何做到这一点?

我能够做到这一点 rows = tb1.read_where(“col_name == 16”) 但是不能使用“喜欢”

1 个答案:

答案 0 :(得分:0)

您无法在PyTables / numexpr查询中直接执行此操作。字符串比较基本上仅限于类似数字的操作(==!=<>等。你需要在python中进行LIKE评估,可能还有正则表达式。这就是我要做的事情:

import re
import tables as tb

new_re = re.compile('new')
with tb.open_file(...) as f:
    tb1 = f.root.tb1
    rows = [row[:] for row in tb1 if new_re.search(row['col_name']) is not None]

这样做的好处是只能读取一次数据。请注意,如果您只关心以new(new%)开头的列,则由于ASCII排序,您可以使用以下内容。

rows = tb1.read_where('col_name >= "new" & col_name < "nex"')