Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyodbc cursor.execute()列表索引超出范围_Python_Sql Server_Pypyodbc - Fatal编程技术网

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

Python pyodbc cursor.execute()列表索引超出范围,python,sql-server,pypyodbc,Python,Sql Server,Pypyodbc,天晚了,我累了——我希望我只是犯了一个愚蠢的错误,但我似乎看不到。有人能看出我做错了什么吗?如果我在SQLServerManagementStudio上运行SQL,它可以正常工作。我可以对游标运行其他SQL语句,但不能运行这个 提前谢谢 系统: Windows 7, Python 3.4, SQLServer 2008, pypyodbc 查询: IF EXISTS(SELECT * FROM sys.databases WHERE name='{MyDBName}') BEGIN ALTE

天晚了,我累了——我希望我只是犯了一个愚蠢的错误,但我似乎看不到。有人能看出我做错了什么吗?如果我在SQLServerManagementStudio上运行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
代码:

例外情况:

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};
但是,如果没有自动提交功能,单凭这一点并不能解决问题


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

你能出示那个异常的回溯吗?如图所示,这相当“断章取义”…我终于解决了问题,我将很快发布答案。不确定这是否与最新版本不同或答案中的拼写错误,但对于其他处理此问题的人,我必须使用
autocommit=True
(注意缺少下划线)
auto_commit=True
抛出了连接错误,并且没有
=True
的参数也不起作用。@谢谢,我的答案不清楚。我有一个名为“auto_commit”的变量。我应该在代码中包含这一点。我现在已经编辑好了-谢谢你纠正我。
DROP DATABASE {MyDBName};