如何在 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_deleted
和 has_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:
...
我在 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_deleted
和 has_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:
...