2017-03-02 25 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]总是无。现在一切运行良好。