如何使用 python dbf 模块从 dbf 文件中删除记录?
How to delete record from dbf file using python dbf module?
我正在尝试 write/delete 使用 python 2.7 和 dbf 包在 visual foxpro 6 dbf 文件中记录:
import dbf
tbl = dbf.Table('test.dbf')
tbl.open()
rec = tbl[0]
print(rec.__class__)
rec.delete_record()
结果:
<class 'dbf.ver_2.Record'>
Traceback (most recent call last):
File "C:/Python/Projects/test/test.py", line 11, in <module>
rec.delete_record()
File "C:\Python\Projects\test\venv\lib\site-packages\dbf\ver_2.py", line 2503, in __getattr__
raise FieldMissingError(name)
dbf.ver_2.FieldMissingError: 'delete_record: no such field in table'
这是该软件包的文档:http://pythonhosted.org/dbf/
record对象确实没有这个方法,但是有记载。 table 以读写模式打开。 (但 Table() 构造函数确实应该 return 打开 table,但它 return 是关闭的 table。)
我做错了什么?
最大的问题是没有其他选择。我知道的唯一其他软件包是 "dbfpy",但它不处理 vfoxpro 6 tables,也不处理不同的字符编码。
该文档已过时。 (我很抱歉。)
你想要的是:
dbf.delete(rec)
tbl.pack()
或者您可以使用 dbfpy 模块,它允许您访问记录 public 变量 deleted。示例代码:
from dbfpy import dbf
...
dbfFile = dbf.Dbf("DbfFileName", readOnly=True)
for rec in dbfFile:
if rec.deleted:
#action if deleted
dbfFile.close()
我正在尝试 write/delete 使用 python 2.7 和 dbf 包在 visual foxpro 6 dbf 文件中记录:
import dbf
tbl = dbf.Table('test.dbf')
tbl.open()
rec = tbl[0]
print(rec.__class__)
rec.delete_record()
结果:
<class 'dbf.ver_2.Record'>
Traceback (most recent call last):
File "C:/Python/Projects/test/test.py", line 11, in <module>
rec.delete_record()
File "C:\Python\Projects\test\venv\lib\site-packages\dbf\ver_2.py", line 2503, in __getattr__
raise FieldMissingError(name)
dbf.ver_2.FieldMissingError: 'delete_record: no such field in table'
这是该软件包的文档:http://pythonhosted.org/dbf/
record对象确实没有这个方法,但是有记载。 table 以读写模式打开。 (但 Table() 构造函数确实应该 return 打开 table,但它 return 是关闭的 table。)
我做错了什么?
最大的问题是没有其他选择。我知道的唯一其他软件包是 "dbfpy",但它不处理 vfoxpro 6 tables,也不处理不同的字符编码。
该文档已过时。 (我很抱歉。)
你想要的是:
dbf.delete(rec)
tbl.pack()
或者您可以使用 dbfpy 模块,它允许您访问记录 public 变量 deleted。示例代码:
from dbfpy import dbf
...
dbfFile = dbf.Dbf("DbfFileName", readOnly=True)
for rec in dbfFile:
if rec.deleted:
#action if deleted
dbfFile.close()