gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:21 25 4
gpt4 key购买 nike

库版本: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 "...\Miniconda3\envs\myenv\lib\site-packages\dbf\__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]

当我第二次运行 open 时,看起来没问题:

    >>> 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 "...\Miniconda3\envs\myenv\lib\site-packages\dbf\__init__.py", line 5516, in append
newrecord = Record(recnum=header.record_count, layout=meta, kamikaze=kamikaze)
File "...\Miniconda3\envs\myenv\lib\site-packages\dbf\__init__.py", line 2773, in __new__
record._update_disk()
File "...\Miniconda3\envs\myenv\lib\site-packages\dbf\__init__.py", line 3100, in _update_disk
layout.dfd.seek(location)
ValueError: seek of closed file

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

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

最佳答案

快速回答:升级到0.97.2。

<小时/>

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

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

  • with 语句
  • dbf.Processing()
  • dbf.add_fields()
  • dbf.delete_fields()
  • dbf.rename_field()

关于python - 如何使用 Python dbf 库读取和创建新的 FoxPro 2.6 数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49433363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com