我在python3.5中使用dbf库。 DBF表有一列只有日期而没有时间,另一列只有时间。想要检索最近五分钟的记录。Python过滤一个日期范围内的DBF(两个日期之间)
我是新来的这个模块,目前只看到了两种方法来获取存储在DBF数据的一部分:
首先,与交感神经SQL查询功能:
records = table.query("SELECT * WHERE (SA03 BETWEEN " + beforedfilter + " AND " + nowdfilter + ") AND (SA04 BETWEEN " + beforetfilter + " AND " + nowtfilter + ")")
这将是一个熟悉的方法,但返回的记录是文件中的第一条记录,而不是在给定的时间范围内。可能是因为sql查询不被模块支持?或者只是我误解了我的查询中的某些内容?另一个奇怪的是,在打印几条记录后,我会得到一个例外:UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 3: ordinal not in range(128)
。据我所知,表中没有非ascii字符。
另一种方法是使用模块的缩小记录的默认方式。如果我想要找到一个特定的日期和时间,但对于范围,我没有线索如何进行。
index = table.create_index(lambda rec: rec.SA03)
records = index.search(match=(?!))
可以使查询工作,而无需使用变量?最后一个条款永远不会是真的,是吗? –
@ joel goldstick:感谢您对第二种情况的更正。我需要这些变量,但是下面是插入变量时字符串的例子:SELECT * WHERE(SA03 BETWEEN 15/08/2016和18/08/2016)AND(SA04 BETWEEN 15:39:25 AND 15 :39:25)。即使我摆脱了第二种情况,我有一个印象就是它试图转储整个表格。并且需要一段时间来处理sql查询。 – hTech