尝试写行时出现“FieldMissingError”

时间:2015-09-23 11:10:37

标签: python python-3.x dbf

我一直在字段('severa_id')上得到一个FieldMissingError,我确信它存在。我检查了ver_33.py,它显示如果该字段不在self._meta.fields中,则会触发异常。

table._meta.fields显示该字段在那里:

print(table._meta.fields)
>>> 
['proj_code', 'severa_id', 'rec_id', 'ext_key']
>>> 

这是我正在尝试的代码:

table = dbf.Table(path_to_dbf)

table.open()

for row in dbf.Process(table):
    for project in projects:
        if str(row.proj_code)[0:4] == project["ProjectNumber"]:
            row.write_record(severa_id=project["GUID"])

我也尝试过这些设置字段的方法:

row.severa_id = project["ProjectNumber"]
#row.write()
row.write_record()

最后,我还尝试设置其他每个字段(使用随机字符串),这会导致相同的错误。

编辑:我正在使用dbf模块(https://pypi.python.org/pypi/dbf/0.96.005

编辑:原始追溯:

Traceback (most recent call last):
File "<string>", line 420, in run_nodebug
File "C:\Users\Alexander\Documents\update_projecten\update_dbf.py", line 58, in <module>
row.write()
File "C:\Users\Alexander\Envs\vfp\lib\site-packages\dbf\ver_33.py", line    2451, in __getattr__
raise FieldMissingError(name)
dbf.ver_33.FieldMissingError: 'write:  no such field in table'

编辑:有效的脚本的最终版本。注意不要使用Process并在dbf.write中指示要写入的行和字段。

table = dbf.Table(path_to_dbf)
table.open()

for row in table:
    for project in projects:
        if str(row.proj_code)[0:4] == project["ProjectNumber"]:
           dbf.write(row, severa_id=project["GUID"])

1 个答案:

答案 0 :(得分:1)

write_record不再作为行方法存在,因此您看到的错误可能表明write_record不是字段。

相反,请尝试:

dbf.write(severa_id=project['GUID'])