2011-09-24 3 views
0

pyodbc를 사용하여 python 스크립트를 통해 informix 데이터베이스를 업데이트하면 자동으로 실패합니다. pyodbc 위키에서 제공하는 수동 시도로 내가 구문을 사용하고SQL 업데이트 실패 - pyodbc - informix

내가뿐만 아니라 pyodbc 그룹에서이 질문을 게시하지만 불행히도 대답을하지 않았다 자동 커밋

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

뿐만 아니라 커밋합니다.

+0

어떤 의미에서 그들은 실패 했나요? 'eqpt'에 일련 번호가 'SAM'인 항목이 있습니까? pyodbc 신호 장애는 어떻게됩니까? 표시된 코드에는 테스트가 표시되지 않습니다. 왜 당신은 (당신의 pyodbc에 대한 거의 지식이 부족한) 업데이트 문장에 커서가 있어야할까요? 단순히 실행해야하는 싱글 톤 구문입니다. 커서를 열기 전에 커서를 열어야합니까? –

답변

1

두 아이디어 : 많은 레코드가 (이 execute()에 의해 retured됩니다) 변경되었습니다, 얼마나 많은 레코드를 변경하는 방법을

  1. 확인 (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 드라이버가 반환하는 내용을 확인하십시오.