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

标签 python sql-server pypyodbc

很晚了,我累了 - 我希望我只是犯了一个愚蠢的错误,但我似乎看不到它。谁能看到我可能做错了什么?如果我在 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()

异常(exception):

ex = {IndexError} list index out of range

最佳答案

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

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

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

     cursor.execute(query)
     cursor.commit()

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

DROP DATABASE {MyDBName};

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

我希望这对某人有帮助,该 sleep 了:)

关于python - pypyodbc cursor.execute() 列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28230176/

相关文章:

python - pandas - 通过重复值连接列

Python 3 - 将变量导入字典

python - Beautiful Soup 和正则表达式

sql - 如何替换sql server中的第n个字符

sql - 使用 SQL 身份验证执行 SSIS 包

python - 在 Mac 上使用 SQL Server ODBC 时出错 : [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")

python - 如何处理 GRequests 中的错误?

python - MSSQL 'Numeric Value Out of Range' 20 位 python Long Int 到 Numeric(24,0) 列时出错

python - 针对 Access 数据库的 pyodbc 查询出现 "Optional feature not implemented"错误

sql - 使用连续编号对重复项进行编号