我在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