2013-11-25 4 views
14

MS SQL Express db를 사용합니다. 데이터를 연결하고 가져올 수 있습니다. 그러나 데이터 삽입이 작동하지 않습니다.pyodbc를 SQL에 삽입하십시오.

cursor.execute("insert into [mydb].[dbo].[ConvertToolLog] ([Message]) values('test')") 

아무런 오류가 없지만 테이블에 아무 것도 삽입되지 않습니다. 데이터를 가져온 직후에 삽입 된 행을 가져옵니다. 그러나 아무 것도 구원받지 못합니다.

MS SQL Server Management Studio에서 삽입 기능이 작동합니다.

답변

33

데이터를 커밋해야합니다. 각 SQL 명령은 트랜잭션에 있고 다른 SQL 명령에서 읽을 수 있도록 SQL Server에 트랜잭션을 기록하기 위해 트랜잭션을 커밋해야합니다.

MS SQL Server Management Studio에서 기본값은 자동 커밋을 허용하는 것으로 각 SQL 명령이 즉시 작동하고 롤백 할 수 없음을 의미합니다.

pyodbc Getting Started document의 삽입 예는

cursor.execute("insert into products(id, name) values ('pyodbc', 'awesome library')") 
cnxn.commit() 

이상 사용하여 매개 변수

cursor.execute("insert into products(id, name) values (?, ?)", 'pyodbc', 'awesome library') 
cnxn.commit() 

문서가

참고 호출 cnxn.commit 말한다으로

()입니다. 커밋을 호출해야 변경 사항이 손실됩니다! 연결이 닫히면 보류중인 변경 사항이 롤백됩니다. 이렇게하면 오류 복구가 매우 쉬워 지지만 커밋을 호출해야합니다.