如何在 python 中使用 dbf-module 忽略已删除的记录?

How to ignore deleted records using dbf-module in python?

我在 Python 2.7 中使用 Ethan Furman 的 dbf-module 版本 0.96.005(最新版本)使用老式的 FoxPro2.x-tables。由于我想忽略删除的记录,所以我在分配tbl = dbf.Table(dbf_path)后设置tbl.use_deleted = False。我尝试在打开 table 执行 with tbl.open('read-only') as tbl: ... 之前和之后进行设置,但是 这个和那个似乎都没有任何效果。

我试过创纪录的水平:

for rec in tbl:
    if not rec.has_been_deleted and ...

但这给了我:

FieldMissingError: 'has_been_deleted:  no such field in table'

我在做 s.th。错误的?还是该功能不再可用(就像 5 年前一样 - 参见 Visual Fox Pro and Python)?

use_deletedhas_been_deleted 不再存在,并已替换为函数 is_deleted.

所以你此时的选择是(假设 from dbf import is_deleted):

# check each record
for rec in tbl:
    if is_deleted(rec):
        continue

# create active/inactive indices

def active(rec):
    if is_deleted(rec):
        return DoNotIndex
    return dbf.recno(rec)

def inactive(rec):
    if is_deleted(rec):
        return recno(rec)
    return DoNotIndex

active_records = tbl.create_index(active)

deleted_records = tbl.create_index(inactive)

然后遍历那些:

# check active records
for rec in active_records:
    ...