2016-06-22 3 views
1

기본적으로 MS Access 데이터베이스를 기반으로하는 Table1의 Column1_mbgl 필드 데이터를 업데이트하려고합니다. 스크립트는 아무런 오류없이 실행되지만 테이블을 검사 할 때 업데이트가 발생하지 않습니다. 어떤 성공도없이 코드에 표시된대로 두 가지 옵션을 시도했습니다. 두 번째 옵션은 MS Access 쿼리에서 직접 생성 된 SQL 코드입니다. 아무도 내가 코드에서 누락 된 부분을 제안 할 수 있습니까?Pyodbc는 MS 액세스 테이블을 업데이트하지 않습니다.

#import pypyodbc 
import pyodbc 

# MS ACCESS DB CONNECTION 
pyodbc.lowercase = False 
conn = pyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" + 
    r"Dbq=C:\temp\DB_access.accdb;") 

# OPEN CURSOR AND EXECUTE SQL 
cur = conn.cursor() 

# Option 1 - no error and no update 
cur.execute("UPDATE Table1 SET Column1_mbGL = Column2_mbGL-0.3 WHERE ((Column3_name='PZ01') AND (DateTime Between #6/14/2016 14:0:0# AND #6/16/2016 12:0:0#) AND (TYPE='LOG'))"); 

# Option 2 - no error and no update 
#cur.execute("UPDATE Table1 SET Table1.Column1_mbGL = [Table1]![Column2_mbGL]-0.3 WHERE (((Table1.Column3_name)='PZ01') AND ((Table1.DateTime) Between #6/14/2016 14:0:0# And #6/16/2016 12:0:0#) AND ((Table1.TYPE)='LOG'))"); 

cur.close() 
conn.close() 
+0

where 조건을 만족하는 레코드가 db에 있는지 확인 했습니까? 또한 쿼리가 파이썬 밖에서 예상대로 업데이트되는지 확인하는 것도 중요합니다. – notionquest

+0

예 성공적인 쿼리로 동일한 쿼리가 MS Access에서 실행되었으므로이 조건에 대한 데이터가 있습니다. – Curtis

+2

UPDATE 쿼리를 실행 한 후'conn.commit()'을 잊어 버렸습니다. –

답변

3

업데이트 쿼리를 실행 한 후 conn.commit()을 잊어 버렸습니다. Python database API은 기본적으로 "autocommit"을 사용하여 연결을 열도록 지정하므로 명시적인 commit이 필요합니다.

관련 문제