如何使用 Python dbf 库读取和创建新的 FoxPro 2.6 数据库 table
How to read and create new FoxPro 2.6 database table using Python dbf library
库版本: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]
当我运行第二次打开时似乎还可以:
>>> table.open(mode=dbf.READ_WRITE)
dbf.Table('test.dbf', status=<DbfStatus.READ_WRITE: 2>)
然而,当我尝试将一些数据写入 table 时,它卡住了:
>>> 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
如果我将备注字段添加到 table 它会打开(我不必调用它两次)并正确附加。
这是一个错误还是我做错了什么?
快速回答:升级到 0.97.2.
长答案:header 创建没有备忘录的 'fp'
table 时存在错误,现已修复。
注:dbf.Table
returns table CLOSED
;但是,某些命令会自动为您打开和关闭 table:
with
声明
dbf.Processing()
dbf.add_fields()
dbf.delete_fields()
dbf.rename_field()
库版本: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]
当我运行第二次打开时似乎还可以:
>>> table.open(mode=dbf.READ_WRITE)
dbf.Table('test.dbf', status=<DbfStatus.READ_WRITE: 2>)
然而,当我尝试将一些数据写入 table 时,它卡住了:
>>> 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
如果我将备注字段添加到 table 它会打开(我不必调用它两次)并正确附加。
这是一个错误还是我做错了什么?
快速回答:升级到 0.97.2.
长答案:header 创建没有备忘录的 'fp'
table 时存在错误,现已修复。
注:dbf.Table
returns table CLOSED
;但是,某些命令会自动为您打开和关闭 table:
with
声明dbf.Processing()
dbf.add_fields()
dbf.delete_fields()
dbf.rename_field()