如何使用Python dbf库读取和创建新的FoxPro 2.6数据库表



库版本:dbf 0.97.0,python版本3.5.5

我正在尝试使用dbf库创建一个新的 FoxPro 2.6 .DBF文件。我跑

    >>> import dbf
    >>> table = dbf.Table('test', 'TEST C(40); TEST2 N(3,0); TEST3 C(3)', dbf_type='fp')
    >>> table.open(mode=dbf.READ_WRITE)
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "...Miniconda3envsmyenvlibsite-packagesdbf__init__.py", line 5793, in open
        raise DbfError("Unsupported dbf type: %s [%x]" % (version_map.get(header.version, 'Unknown: %s' % header.version), header.version))
    dbf.DbfError: Unsupported dbf type: Unknown: 0 [0]

当我第二次打开时,它似乎还可以:

    >>> table.open(mode=dbf.READ_WRITE)
    dbf.Table('test.dbf', status=<DbfStatus.READ_WRITE: 2>)

但是,当我尝试将一些数据写入表时,它卡住了:

    >>> table.append(("Lorem ipsum", 123, "321"))
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "...Miniconda3envsmyenvlibsite-packagesdbf__init__.py", line 5516, in append
        newrecord = Record(recnum=header.record_count, layout=meta, kamikaze=kamikaze)
      File "...Miniconda3envsmyenvlibsite-packagesdbf__init__.py", line 2773, in __new__
        record._update_disk()
      File "...Miniconda3envsmyenvlibsite-packagesdbf__init__.py", line 3100, in _update_disk
        layout.dfd.seek(location)
    ValueError: seek of closed file

如果我将备注字段添加到表中,它会打开(我不必调用它两次(并正确附加。

这是一个错误还是我只是做错了什么?

快速回答:升级到0.97.2.


长答案:没有备忘录的'fp'表的标题创建中存在错误,现已修复。

注意:dbf.Table返回表CLOSED;但是,某些命令将自动为您打开和关闭表:

  • with声明
  • dbf.Processing()
  • dbf.add_fields()
  • dbf.delete_fields()
  • dbf.rename_field()

相关内容

  • 没有找到相关文章

最新更新