2017-01-18 7 views
0

私はcrateテーブル内のオブジェクトの配列を持っていると私はSELECTとはfetchAll()コマンドを作るとき、それは私の辞書の次のリストを与える:オブジェクトの配列内のオブジェクト/辞書を挿入する(クレート、パイソン)

[{"key": "two", "id": "1", "value": "three", "tag": False}, etc..] 

その後、これらの辞書のいずれかから値を変更し、SQL UPDATEを使用して配列を更新したいとします。ハードコードでは、次のようになります。

{key = "two", id = "1", value = "three", tag = False} 

いいえ」について:このような文字列に

{"key": "two", "id": "1", "value": "three", "tag": False} 

cur.execute('UPDATE servers SET 
tags =[{key= "two", id= "1", value= "three", tag= False}, etc..]') 

それは私がこの辞書を解析する必要があることを意味しますキーの代わりに:=どのように私はそれをPythonで行うことができますか?

答えて

0

私は、SQLAlchemyのようなORMを使って、これは、すぐにサポートされているようです。次に、pythonオブジェクトを使用してデータベース値を更新することができます。これにより、タイプを手作業で適切なスキーマに変換する手間が省けます。

1

パラメータサポートを使用する場合は、辞書をCrate固有のオブジェクト構文に変換する必要はありません。あなたがする必要がある辞書のリストにあなたのケースでは

cur.execute("update servers set tags['value'] = ?", ('three',)) 

:あなただけがこのような 何かができる辞書の単一の値を更新する必要がある場合

を(あなたは本当にとにかく使う必要があります)次のように値全体を更新します。

cur.execute("update servers set tags = ?", (updated_list,)) 
関連する問題