2

遅くなりました。疲れています。愚かな間違いを犯しているだけだといいのですが、それがわかりません。誰かが私が間違っているかもしれないことを見ることができますか? 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
4

1 に答える 1

4

後世のために、私はついにそれを通り抜ける方法を見つけました。後で誰かがこれを読んだ場合に備えて共有します。

接続を確立するときに、autocommit プロパティを true に設定する必要があることがわかりました。

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

     cursor.execute(query)
     cursor.commit()

クエリを次のように変更することにも注意してください。

DROP DATABASE {MyDBName};

ただし、それだけでは自動コミットなしでは修正されませんでした。

私はそれが誰かに役立つことを願っています、寝る時間:)

于 2015-01-30T06:31:01.703 に答える