2013-04-10 1 views
1

pyODBC가 Python 3.2에 설치되어 있고 테스트로 만든 SQL Server 2008 R2 데이터베이스를 업데이트하려고합니다.pyODBC 및 SQL Server 2008 및 Python 3

데이터 검색에 문제가 없으며 항상 효과가 있습니다.

그러나 프로그램이 cursor.execute ("sql")을 실행하여 행을 삽입하거나 삭제할 때 오류가 발생하지 않습니다. 응답은 마치 데이터베이스 업데이트에 성공한 것 같지만 변경 사항은 반영되지 않습니다.

아래에 기본적으로 (내가 나중에에 대한 계획이) 사전을 만드는 그냥

I (내가 로그에 쓴 항목을 테스트로 작동) SQL INSERT 문의 빠른 빌드를 수행하는 코드 내 테이블에 Killer라는 11 개의 행이 있습니다. Killer는 커밋 된 후에도 전혀 영향을받지 않습니다.

나는 이것이 뭔가 바보 같지만 나는 그것을 볼 수 없다는 것을 알고있다. 여기

코드입니다 : 방금 Connection.commit() 방법에 대한 괄호가없는 것 같은이 게시물에 오타가없는 가정

cnxn = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=PHX-500222;DATABASE=RoughRide;UID=sa;PWD=slayer') 
cursor = cnxn.cursor() 

# loop through dictionary and create insert entries 
logging.debug("using test data to build sql") 
for row in data_dictionary: 
    entry = data_dictionary[row] 
    inf = entry['Information'] 
    dt = entry['TheDateTime'] 
    stat = entry['TheStatus'] 
    flg = entry['Flagg'] 
    # create sql and set right back into row 
    data_dictionary[row] = "INSERT INTO Killer(Information, TheDateTime, TheStatus, Flagg) VALUES ('%s', '%s', '%s', %d)" % (inf, dt, stat, flg) 

# insert some rows 
logging.debug("inserting test data") 
for row in data_dictionary.values(): 
    cursor.execute(row) 

# delete a row 
rowsdeleted = cursor.execute("DELETE FROM Killer WHERE Id > 1").rowcount 
logging.debug("deleted: " + str(rowsdeleted)) 

cnxn.commit 

답변

4

, 같습니다

... 
# delete a row 
rowsdeleted = cursor.execute("DELETE FROM Killer WHERE Id > 1").rowcount 
logging.debug("deleted: " + str(rowsdeleted)) 

cnxn.commit() 
+0

감사합니다! !! !! 너무 재미있어, 내 문제를 바로 쳐다 보았다. 흥미로운 점은 cnxn.commit이 속성이 아니라 기능이라는 파이썬 파서의 경고 또는 불만이 없다는 것이다. 다시 한 번 감사드립니다! – Tab

+0

@Tab 스크립트를 통해 실행 중이면 아무 메시지도 없지만 인터프리터에서 객체의 문자열 표현을 인쇄합니다. – Bryan

+0

이 시점에서 WingIDE 내에서 실행 중입니다. .NET이 마지막 플랫폼 이었으므로 상당히 변화가있었습니다. – Tab