2014-09-10 2 views
-1

간단한 UPDATE 문에 문제가 있습니다. 나는 UPDATE 문이 많이 생성하는 파이썬 도구를 작성하고이를 만든 후 내 Access 데이터베이스에 그들을 실행하려는하지만이 예를 들어 하나 개의 문장입니다 작동하지 않습니다pyodbc에서 Access 데이터베이스의 UPDATE 문이 자동으로 실패합니다.

UPDATE FCL_B_COVERSHEET_A SET BRANCH = 0 WHERE OBJ_ID = '1220140910132011062005'; 

문 구문이 아닌 문제. 나는 그것을 테스트하고 작동합니다.

다음 코드 단편은 연결 개체의 초기화를 보여줍니다. 같은 오류 메시지 또는 아무것도 - -

strInputPathMDB = "C:\\Test.mdb" 
DRV = '{Microsoft Access Driver (*.mdb)}'; 
con = pyodbc.connect('Driver={0};Dbq={1};Uid={2};Pwd={3};'.format(DRV,strInputPathMDB,"administrator","")) 

는 그 후 나는 하나의 SQL 문

def executeSQLStatement(conConnection, strSQL): 
     arcpy.AddMessage(strSQL) 
     cursor = conConnection.cursor() 
     cursor.execute(strSQL) 
     conConnection.commit() 

을 실행하고 나는이 코드 모두를 실행하면 것은 작동하는 것 같다 방법을 썼다뿐만 아니라 데이터가 아니다 업데이트 된 그리고 내가 뭘 잘못하고 있는지 모르겠다. ...

for strSQL in sqlStateArray: 
    executeSQLStatement(con, strSQL) 
con.close() 

나는 내 문제가 무엇인지 이해하기를 바랍니다. 당신의 도움을 주셔서 감사합니다. 드라이브 :

크리스

+0

데이터베이스 파일이 실제로 C : \ (C : 드라이브의 루트 폴더)에 있습니까? –

+0

예. 그러나 나는 또한 "D : \ Test.mdb"시도하고 작동하지 않습니다. –

+0

"공개 문서"와 같이 모든 사람이 제한없이 읽거나 쓸 수있는 권한을 가지고있는 곳에서 .mdb 파일을 가져 와서 도움이되는지 확인하십시오. 코드가 본질적으로 정확하므로 .mdb가 저장된 폴더에서 사용 권한 문제가 의심됩니다. –

답변

0

문제는 여기 .mdb 파일은 C의 루트 폴더에이었다이었다. 루트 폴더는 보통 일반 사용자를 읽기 전용 액세스로 제한하여 데이터베이스 파일을 읽기 전용으로 열었습니다. .mdb 파일을 공용 폴더로 이동하면 문제가 해결됩니다.