我正在尝试将一条记录添加到具有索引文件和备忘录文件的现有空DBF表(Fox Pro(中。它已经存在于我的文件夹中:
Table.dbf
Table.fpt
Table.cdx
表.dbf有三个字段:
Field1 (Integer)
Field2 (Character)
Field3 (Memo)
我使用中所述的方法
http://stackoverflow.com/questions/37891686/how-to-add-a-field-to-a-dbf-file
具体如下:
import dbf
db = dbf.Table('table.dbf')
db.open()
rec = dbf.create_template(db)
rec.field1 = 9
rec.field2 = ('some text')
db.append(rec)
目前为止,一切都好。问题是当字段的类型为备忘录时
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-packagesdbfver_33.py", line 2959, in __setattr__
Self._dirty = True
File "...libsite-packagesdbfver_33.py", line 2956, in __setattr__
Raise FieldMissingError (name)
Dbf.ver_33.FieldMissingError: '_dirty: no such field in table'
我在
Http://stackoverflow.com/questions/16682470/using-python-to-write-dbf-table-with-fpt-memos?rq=1
我试图改变:
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'} )