2017-04-09 55 views
1

我試圖將記錄添加到具有索引文件和備忘錄文件的現有空DBF表(Fox Pro)。它已經存在我的文件夾中:Python DBF。使用fpt備忘錄字段將記錄添加到dbf表中

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) 

到目前爲止這麼好。問題是,當一個字段類型備忘錄的

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

您使用的是最新版本嗎? 0.96.8。如果沒有,請升級並重試。讓我們知道你是否仍然有問題。 –

+0

這是一個conda安裝。列表爲dbf 0.96.003,py36_0。 Thaks Ethan。 –

回答

0

我沒有看到在最新版本中這種行爲,但如果你無法升級你有一對夫婦其他選擇:

  • 傳遞作爲tuple(字段必須以數據)

  • 傳遞數據作爲一個dict

例如:

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

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

太棒了!與第二個選項一起工作,但下面的例子應該是db.append(...,而不是dbf.append(....我看到你是python DBF包的作者,恭喜,我覺得它非常有用。謝謝你的幫助。KR –

+0

@LuisGP:謝謝,修正了第二個例子,不客氣! –

相關問題