代码之家  ›  专栏  ›  技术社区  ›  nagylzs

如何使用python dbf模块从dbf文件中删除记录?

  •  0
  • nagylzs  · 技术社区  · 7 年前

    我正在尝试使用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()构造函数应该返回一个打开的表,但它会返回一个关闭的表,这也是事实。)

    我做错了什么?

    最大的问题是没有其他选择。我所知的另一个包是“dbfpy”,但它不处理vfoxpro 6表,也不处理不同的字符编码。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Ethan Furman    7 年前

    那份文件已经过时了。(很抱歉。)

    您想要的是:

    dbf.delete(rec)
    tbl.pack()
    
        2
  •  0
  •   Lemjur    3 年前

    或者,您可以使用 dbfpy公司 允许您访问记录公共变量的模块 删除 . 示例代码:

    from dbfpy import dbf
    ...
    dbfFile = dbf.Dbf("DbfFileName", readOnly=True)
    for rec in dbfFile:
      if rec.deleted:
        #action if deleted
    dbfFile.close()