代码之家  ›  专栏  ›  技术社区  ›  SteveJ

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

  •  2
  • SteveJ  · 技术社区  · 10 年前

    时间晚了,我累了——我希望我只是犯了一个愚蠢的错误,但我似乎看不到。有人能看出我做错了什么吗?如果我在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
    
    1 回复  |  直到 10 年前
        1
  •  4
  •   SteveJ    9 年前

    为了子孙后代,我终于找到了自己的方法,如果有人稍后读到这篇文章,我将与大家分享:

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

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

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

    DROP DATABASE {MyDBName};
    

    然而,如果没有自动提交,这一点并不能解决问题。

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

    推荐文章