2016-10-18 9 views
1

私は毎回pyodbcクエリの後に自動結果フェッチを行いたいと思います。通常の状況では、cursor.fetchall()呼び出しでは、SQLが実行されていない場合や結果セットを返さなかった場合(例えばSELECT文ではない)、ProgrammingError例外が発生します。私はこのようなことをしたい:例外処理なしでpyodbcでfetchall()を自動化するにはどうすればよいですか?

例外処理を使用せずに可能にする方法はありますか?

答えて

1

ここで実行するために、サンプルクエリのリストで、あなたのために働くかもしれない例を示します。

sql_to_run = [ 
    "SELECT 10000", 
    "SELECT 2 + 2", 
    "", 
    "SELECT 'HELLO WORLD'", 
] 

for sql in sql_to_run: 
    rows = cursor.execute(sql) 

    if cursor.rowcount: 
     for row in rows: 
      print(row) 

出力:

(10000,) 
(4,) 
('HELLO WORLD',) 

ウィルトリックを行いますか?がんばろう!

+1

ありがとうございます。私はあなたのコードを試してみて、私の 'cursor.rowcount'がフェッチする結果があるときは** - 1 **、そうでないときは別の数があることを知りました。それはちょっと変です(ドキュメントによると、それは別の方法で動作するはずです)が、とにかく私の問題を解決しました。 –

+1

何らかの理由で 'cursor.rowcount'が間違った値に等しい場合、' cursor.description'属性(結果がないときは 'None')を使うことができることが分かりました。 –

関連する問題