2011-09-24 85 views
0

使用pyodbc通过python脚本更新informix数据库的过程失败。SQL更新失败 - pyodbc - informix

我使用的语法在pyodbc维基提供,并试图手动提交和自动提交

cursor= conn.cursor() 
    cursor.execute("update eqpt set notes='BOB' where serialno='SAM'") 
    conn.commit() 
    conn.close() 

我张贴的pyodbc组在这个问题上也可惜没有得到答案。

+0

从何种意义上讲,他们失败了吗?你在'eqpt'中有一个序列号为''SAM'的项目吗? pyodbc信号如何失败?在显示的代码中没有可见的测试。为什么你需要更新语句上的游标(这可能表明我几乎完全缺乏pyodbc的知识)?这是一个单独的声明,只需要执行。在执行任何操作之前是否需要打开游标? –

回答

1

两个想法:

  1. 检查多条记录是如何改变的(它是由​​retured),以及有多少记录应当被改变(使用SELECT count(*) ... WHERE...

    cursor= conn.cursor() 
    
    rs = c.execute("SELECT count(*) FROM eqpt WHERE serialno='SAM'") 
    for txt in c.fetchall(): 
        print('before %s' % (txt[0])) 
    
    rows_affected = cursor.execute("update eqpt set notes='BOB' where serialno='SAM'") 
    print('rows_affected: %d' % (rows_affected)) 
    
    rs = c.execute("SELECT count(*) FROM eqpt WHERE serialno='SAM'") 
    for txt in c.fetchall(): 
        print('after %s' % (txt[0])) 
    
    conn.commit() 
    conn.close() 
    
  2. 您可以启用ODBC跟踪并检查ODBC驱动程序返回的内容。