2017-03-02 8 views
0

Python 2.7でsqliteを使用してSQL DBを更新するためにこのスクリプトを作成しました 関数の入力として10個の要素リストがあり、非None要素を更新したいだけです。PythonのSQLiteはコミットコマンドの後にDBを更新しません

ここで、スクリプトを実行したときにエラーが返されない場合でも、スクリプトがif、Update、およびcommitコマンドを通過するかどうかをデバッグして確認するための "印刷"行xx "結果は常に良好ですが、DBは更新されません。

*同じプログラムの別の機能では、同じDBからデータを読み込むため、DBを読み込むためのアクセス権があります。

def update_coin(new_data): 
    #data_coin is a 10 element list 

    id = new_data[0] 

    with con: 

     cur = con.cursor() 

     if new_data[3] is not None: 
      cur.execute("UPDATE COIN_KM SET KM_NUM =? WHERE ID_KM = ?", (new_data[3], id)) 

     if new_data[4] is not None: 
      cur.execute("UPDATE COIN_KM SET ID_NUMIS =? WHERE ID_KM = ?", (new_data[4], id)) 

     if new_data[5] is not None: 
      cur.execute("UPDATE COIN_KM SET DDATE =? WHERE ID_KM = ?", (new_data[5], id)) 

     if new_data[7] is not None: 
      cur.execute("UPDATE COIN_KM SET TITLE =? WHERE ID_KM = ?", (new_data[7], id)) 

     if new_data[8] is not None: 
      cur.execute("UPDATE COIN_KM SET DESCRIPTION =? WHERE ID_KM = ?", (new_data[8], id)) 

     if new_data[10] is not None: 
      cur.execute("UPDATE COIN_KM SET MATERIAL =? WHERE ID_KM = ?", (new_data[10], id)) 

     con.commit() 

誰でもここで何が間違っているか把握できますか?以前私は同様のスクリプトを持っていたし、この問題はありませんでした。 *私はUbuntuでVMで作業していますが、私は自分のDBとスクリプトに777への権限を変更します。 * rootなどの端末でスクリプトを実行します。

+1

'new_data'に値を与えることはできますか?私たちは同じプログラムを実行し、その動作を確認してください。実行可能なコードをすべて追加してください。 – Nilesh

+2

@JohnSnow、あなたの輸入品を提供してください。 – lmiguelvargasf

+1

'print len(con.execute( 'SELECT * FROM Coin_km WHERE ID_km =?'、(id、)).fetchall())'で示されているものは? –

答えて

0

あなたのコメントをお寄せいただきありがとうございます。

入力の場合id = new_data [0]は常にNoneです。今はすべてがうまくいく。

関連する問題