Python pyodbc cursor.execute()列表索引超出范围
天晚了,我累了——我希望我只是犯了一个愚蠢的错误,但我似乎看不到。有人能看出我做错了什么吗?如果我在SQLServerManagementStudio上运行SQL,它可以正常工作。我可以对游标运行其他SQL语句,但不能运行这个 提前谢谢 系统: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
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};