dbfpy - cannot store new record

MRAB google at mrabarnett.plus.com
Thu May 21 09:29:24 EDT 2009


Laszlo Nagy wrote:
> Given this example program:
> 
> import dbfpy
> def dbf_open(tblname):
>    fpath = os.path.join(local.DB_DIR,tblname)
>    f = file(fpath,"ab+")
>    f.seek(0)
>    tbl = dbf.Dbf(f)
>    return tbl
> 
> tbl = dbf_open("partners.dbf")
> rec = tbl.newRecord()
> rec["FIELDNAME1"] = 1
> rec["FIELDNAME2"] = "Somebody"
> rec.store()
> tbl.close()
> 
> I get no exception, no error etc. But the new record is NOT appended to 
> the table. What is wrong here?
> 
I've downloaded dbfpy and experimented with it and I've found that
opening the file with file(fpath,"ab+") causes some extra junk to be
appended to the end of the file when the DBF file is closed. It works
much better (and is simpler!) if you open the DBF file with the
filename:

fpath = os.path.join(local.DB_DIR, "partners.dbf")
tbl = dbf.Dbf(fpath)
rec = tbl.newRecord()
rec["FIELDNAME1"] = 1
rec["FIELDNAME2"] = "Somebody"
rec.store()
tbl.close()



More information about the Python-list mailing list