2

太晚了,我累了——我希望我只是犯了一个愚蠢的错误,但我似乎看不到它。谁能看到我可能做错了什么?如果我在 SQL Server Management Studio 上运行 SQL,它可以正常工作。我可以对游标运行其他 SQL 语句,但不能运行这个。

提前致谢

系统:

Windows 7, Python 3.4, SQLServer 2008, pypyodbc

询问:

IF EXISTS(SELECT * FROM sys.databases WHERE name='{MyDBName}')
BEGIN
 ALTER DATABASE {MyDBName} SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
 DROP DATABASE {MyDBName}; 
END

代码:

cursor.execute(query)
cursor.commit()

例外:

ex = {IndexError} list index out of range
4

1 回答 1

4

为了子孙后代,我终于找到了解决方法,并将分享以防万一以后有人读到:

事实证明,在建立连接时,我需要将 autocommit 属性设置为 true:

auto_commit = true
with pypyodbc.connect(cnx, auto_commit) as connection:
     cursor = connection.cursor()              

     cursor.execute(query)
     cursor.commit()

另请注意,我将查询更改为:

DROP DATABASE {MyDBName};

但是,如果没有自动提交,仅此一项并不能解决问题。

我希望这对某人有所帮助,该睡觉了:)

于 2015-01-30T06:31:01.703 回答