2017-10-06 10 views
0

python辞書を使用してoracle db列を更新しようとしています。 データベースの列を辞書キーで検索し、辞書の値で置き換えたいと思います。私は以下を実行しようとしていますが、更新していません。あなたはconnectionという名前の変数を取るが、その後、あなたがconという名前の変数を参照してくださいupdate_db_columnあなたの関数でPythonを使用したデータベース列更新の問題

for key,value in my_dict.items(): 
    update_db_column(connection,key, value) 

def update_db_column(connection,key,value): 
    query="update table set column=:1 where column=:2" 
    cur=con.cursor() 
    cur.execute(query,(value,key)) 
    cur.commit() 

答えて

0

。これらが同じものであることが意図されているなら、彼らは確かに同じ名前が必要です。 また、実際のコードの後に​​関数を定義することによって、エラーが発生する可能性もあります。 私の推測では、あなたのプログラムは、コードを止めることなくエラーをキャッチしており、そのまま移動しようとしているか、またはconが以前のグローバル変数を参照していると思います。コードを次のように変更した場合:

def update_db_column(connection,key,value): 
    query="update table set column=:1 where column=:2" 
    cur=connection.cursor() 
    cur.execute(query,(value,key)) 
    cur.commit() 

for key,value in my_dict.items(): 
    update_db_column(connection,key, value) 

修正しますか?

+0

申し訳ありませんコードが動作しています。私は更新に時間がかかると思っています。 – Hue

+0

恐ろしい、私はそれが起こるときにそれが嫌い:) – Hallsville3

0

は次のようにスクリプトを修正してください:

def update_db_column(connection,key,value): 
    cur=connection.cursor() 
    query="update table set " + key + " where " + key + "=:value" 
    cur.prepare(query) 
    cur.execute(None, {'value': value}) 
    cur.commit() 

for key,value in my_dict.items(): 
    update_db_column(connection,key, value) 

この変更のいくつかの説明はバインド変数セクションを使用してで、hereです。

関連する問題