Python 数据库。使用 fpt 备注字段将记录添加到 dbf table

Python DBF. Add record to dbf table with fpt memo field

我正在尝试将记录添加到现有的空 DBF table (Fox Pro),它有一个索引文件和一个备忘录文件。它已经存在于我的文件夹中:

Table.dbf
Table.fpt
Table.cdx

Table.dbf 有三个字段:

Field1 (Integer)
Field2 (Character)
Field3 (Memo)

我使用

中描述的方法

具体如下:

import dbf

db = dbf.Table('table.dbf')
db.open() 
rec = dbf.create_template(db) 
rec.field1 = 9 
rec.field2 = ('some text')
db.append(rec)

到目前为止一切顺利。问题是字段类型为 memo

Db = dbf.Table ('table.dbf')
Db.open ()
Rec = dbf.create_template (db)
Rec.field1 = 9
Rec.field2 = ('some text')
Rec.field3 = ('This is a long text')
Db.append (rec)

然后我有一个错误信息:

Traceback (most recent call last):
   File "dbf12.py", line 8, in <module>
     Rec.field3= ('This is a long text')
   File "...libsite-packages\dbf\ver_33.py", line 2959, in __setattr__
     Self._dirty = True
   File "...libsite-packages\dbf\ver_33.py", line 2956, in __setattr__
     Raise FieldMissingError (name)
Dbf.ver_33.FieldMissingError: '_dirty: no such field in table'

我在

中看过类似的问题

我尝试更改:

Db = dbf.Table ('table.dbf', dbf_type = 'Vfp')

但是结果是一样的

有谁知道备注栏的正确输入方式吗?

谢谢。

我在最新版本中没有看到这种行为,但如果您无法升级,您还有其他几个选择:

  • 将数据作为 tuple 传递(字段必须按顺序)

  • 将数据作为 dict

  • 传递

例如:

db.append( (9, 'some text', 'a lot of text') )

db.append( {'field1': 9, 'field3': 'a lot of text', 'field2': 'some text'} )