2016-07-01 8 views
2

Ich benutze dbf-Modul von Ethan Furman Version 0.96.005 (neueste) in Python 2.7 mit altmodischen FoxPro2.x-Tabellen. Da ich gelöschte Datensätze ignorieren möchte, setze ich tbl.use_deleted = False nach Zuweisung tbl = dbf.Table(dbf_path). Ich habe versucht, dies vor und nach dem Öffnen der Tabelle tun with tbl.open('read-only') as tbl: ..., aber weder dies noch das scheint irgendeinen Effekt zu haben.Wie zu ignorieren gelöschte Datensätze mit DBF-Modul in Python?

auf Datensatzebene habe ich versucht:

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

aber das gab mir:

FieldMissingError: 'has_been_deleted: no such field in table' 

Mache ich s.th. falsch? Oder ist dieses Feature nicht mehr verfügbar (wie es vor 5 Jahren war - siehe Visual Fox Pro and Python)?

Antwort

3

use_deleted und has_been_deleted sind nicht mehr vorhanden und wurden durch die Funktion is_deleted ersetzt.

So Ihre Entscheidungen an diesem Punkt sind (unter der Annahme einer from dbf import is_deleted):

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

oder

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

und dann durch jene iterieren:

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