2016-07-01 2 views
2

Я использую dbf-модуль по версии Этана Фурмана 0.96.005 (последний) в Python 2.7 с использованием старомодных таблиц FoxPro2.x. Поскольку я хочу игнорировать удаленные записи, я установил tbl.use_deleted = False после назначения tbl = dbf.Table(dbf_path). Я попытался установить это до и после открытия таблицы, делая with tbl.open('read-only') as tbl: ..., но ни то, ни другое не имеет никакого эффекта.Как игнорировать удаленные записи с использованием dbf-модуля в python?

На уровне записей я пробовал:

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)?

ответ

3

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: 
    ... 
Смежные вопросы