pypyodbc cursor.execute()列表索引超出范围

时间:2015-01-30 06:10:28

标签: python sql-server pypyodbc

已经很晚了,我累了 - 我希望我只是犯了一个愚蠢的错误,但我似乎无法看到它。任何人都可以看到我可能做错了什么?如果我在SQL Server Management工作室上运行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

CODE:

cursor.execute(query)
cursor.commit()

例外:

ex = {IndexError} list index out of range

1 个答案:

答案 0 :(得分:1)

为了后人的缘故,我终于找到了解决这个问题的方法并将分享,以防有人在以后阅读:

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

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

     cursor.execute(query)
     cursor.commit()

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

DROP DATABASE {MyDBName};

但是,如果没有自动提交,那就没有解决它。

我希望这对某人有帮助,有时间睡觉:)