2016-09-03 25 views
2

私は見つけたthis handy answerにどのように辞書を使用して新しいテーブルエントリを作成します。Peewee - 辞書でエントリを更新する

更新と同じ方法でエントリします。しかし、私は更新したい特定のテーブルエントリをどのように扱うべきか分かりません。あなたは、私が明示的にすべてのフィールドを住所見ることができるように

entries = Fruit.select().order_by(Fruit.name.desc()) 
#... all entries are listed with the index number 
entry_index = int(input("Please enter entry number: ")) 
#... 
entry_index -= 1 

name = "Banana" 
color = "yellow" 

if input('Update entry? [Yn] ').lower() != 'n': 
     entries[entry_index].name = name 
     entries[entry_index].color = color 

私の現在のバージョンは次のようになります。 変数(名前、色)を辞書に入れ、前述のダブルスターショートカットlike in this answerで「entry_index」という位置のエントリを更新したいと思います。 しかし、proper method in the docsが見つかりません。

誰でもその方法を知っていますか?

ありがとうございました!

マフ

答えて

2

、次のことができます。また

entry = entries_index[idx] 
entry.something = 'new value' 
entry.another_thing = 'another thing' 
entry.save() 

Entry.update(**{'something': 'new value', 'another_thing': 'another'}).where(Entry.id == entry.id).execute() 

このすべては、ドキュメントに覆われて、それらを徹底的に読み込みをお願いします。クイックスタートのステップをたどって、ピューニーの使い方をより明確にすると思います。

2

ダブルスターのショートカットは、Pythonのものです。これは、メソッド内でキーワード引数に辞書を展開することを可能にします。

some_method(name="Banana", color="yellow") 

私はそれがここにかかわらず、参考になりましだとは思わない:

fruit = { "name": "Banana", "color": "yellow"} 
some_method(**fruit) 

行うことのequivelent次のようになります。それはあなたがこのような何かを行うことができることを意味します。選択したエントリの値はすでに更新されており、次に保存するだけで保存できます。

According to the peewee docsインスタンスを作成すると、保存する呼び出しによってインスタンスが更新されます。つまり、変更した値を更新するにはsaveメソッドを呼び出すだけです。最終的にentries[entry_index].save()を追加すると、それらの変更が維持されます。オブジェクトを更新する

関連する問題