我正在尝试将记录添加到具有索引文件和备忘录文件的现有空DBF表(Fox Pro)中。它已存在于我的文件夹中:
Table.dbf
Table.fpt
Table.cdx
Table.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)
到目前为止一切顺利。问题是当字段是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'
我在
中看过类似的问题Http://stackoverflow.com/questions/16682470/using-python-to-write-dbf-table-with-fpt-memos?rq=1
我试图改变:
Db = dbf.Table ('table.dbf', dbf_type = 'Vfp')
但结果是一样的。
有谁知道输入备忘录字段的正确方法?
感谢。
答案 0 :(得分:0)
我在最新版本中没有看到此行为,但如果您无法升级,则还有其他几种选择:
将数据作为tuple
传递(字段必须按顺序排列)
将数据作为dict
例如:
db.append( (9, 'some text', 'a lot of text') )
或
db.append( {'field1': 9, 'field3': 'a lot of text', 'field2': 'some text'} )