2

dbfモジュールを使用してdbfのレコードを更新するにはどうすればよいですか: https://pypi.python.org/pypi/dbf

これが私が試したものです:

table2 = dbf.Table(filename, codepage="cp1252")
table[0].name = "changed"

しかし、私は得る:

  File "<input>", line 1, in <module>
  File "/venv/lib/python3.4/site-packages/dbf/ver_33.py", line 2508, in __setattr__
    raise DbfError("unable to modify fields individually except in `with` or `Process()`")
dbf.ver_33.DbfError: unable to modify fields individually except in `with` or `Process()`

データの読み取りと追加はできましたが、変更はできませんでした。どうすればよいですか?

4

2 に答える 2

2

レコードへのデータの書き込みは、いくつかの異なる方法で実行できます。

  • レコードをコンテキスト マネージャーとして使用する:

    with table[0] as rec: rec.name = "changed"

  • 関数を使用してdbf.Process、ループ内の複数のレコードを処理します。

    for rec in Process(my_table): rec.name = rec.name.title()

  • writeモジュール内の関数を使用dbf

    dbf.write(some_record, name='My New Name')

安全性と性能の両方を高めるために、このようにしました。

于 2015-12-07T16:39:07.893 に答える
0

わかりました、「with or process」の部分は理解できませんでしたが、どうやって思い通りになったかは次のとおりです。

dbf.write(table[0],name="changed")

そこにあり、このフォークにはより多くのドキュメントがありましたhttps://bitbucket.org/ltvolks/python-dbase

これはより安全なはずですDBFで検索し、レコードを更新します

于 2015-12-07T16:04:00.070 に答える