2013-11-25 49 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 Server,以便可以被其他SQL命令读取。

在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()。 您必须致电提交,否则您的更改将会丢失!连接关闭时,任何挂起的更改都会回滚。这使错误恢复非常容易,但是您必须记得调用commit。