2017-03-02 127 views
0

我編寫了這個腳本來用Python 2.7中的sqlite更新SQL數據庫 作爲函數的輸入,我們有一個十個元素列表,一些元素可以是None或不是,I只想更新不是無元素。python中的SQLite在提交命令後沒有更新數據庫

問題在這裏,當腳本運行時它不會返回任何錯誤,即使我嘗試了幾次「打印」行xx「」來調試並檢查腳本是否通過if,Update和commit命令。結果總是很好,但是數據庫沒有更新。 *請注意,在同一個程序中的另一個函數中,我從相同的數據庫中讀取數據,所以我有很好的讀取數據庫的權限。

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中工作,我將權限更改爲777到我的數據庫和腳本。 *我運行腳本與終端像根。

+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]總是無。現在一切運行良好。