2017-05-02 36 views
1

Python 2.7.13のファイルからSQLクエリを実行しようとしていて、結果セットを表示中に次のエラーが発生しました。 ファイル内のSQLステートメントはテーブルからのカウント(*)のように単純ですが、このロジックが機能する場合、複雑なクエリに置き換える必要があります。Python - ファイルから複数のSQLクエリを実行する

エラー

Info : (7,) 
Traceback (most recent call last): 
    File "SQLserver_loop.py", line 19, in <module> 
    fields = c.fetchall() 
    File "pymssql.pyx", line 542, in pymssql.Cursor.fetchall (pymssql.c:9352) 
pymssql.OperationalError: Statement not executed or executed statement has no re 
sultset 

のPythonスクリプト:

import pymssql 

conn = pymssql.connect(
    host=r'name', 
    user=r'user', 
    password='credential', 
    database='Test') 

c = conn.cursor() 


fd = open('ZooDatabase.sql', 'r')  # Open and read the file as a single buffer 

sqlFile = fd.read() 

fd.close() 


sqlCommands = sqlFile.split(';')  # all SQL commands (split on ';') 


for command in sqlCommands:   # Execute every command from the input file 

    c.execute(command) 

    fields = c.fetchall() 

    for row in fields: 

     print "Info : %s " % str(row) 

c.close() 

conn.close() 

エラーメッセージ

**SQL File - ZooDatabase.sql** 

    select count(*) from emp2; 

    select count(*) from emp1; 

**Error Log with SQL print statement output:** 

    C:\Python27\pycode>python SQLserver_loop.py 
    SELECT count(*) FROM emp2 
    Info : (7,) 

    SELECT count(*) FROM emp1 
    Info : (7,) 

    Traceback (most recent call last): 
     File "SQLserver_loop.py", line 20, in <module> 
     fields = c.fetchall() 
     File "pymssql.pyx", line 542, in pymssql.Cursor.fetchall (pymssql.c:9352) 
    pymssql.OperationalError: Statement not executed or executed statement has no re 
    sultset 
+0

ファイル内のクエリの形式を確認してください。質問に追加してください。 – shadow0359

+1

あなたのコードに実行時のクエリが表示されるようにして、問題の原因となっているクエリがわかるようにしてから、そのクエリがどのように見えるかを表示してください。 –

+0

は、質問にSQL file&print statementの要求された情報を追加しました。 – Rajeev

答えて

0

fields = c.fetchall()私がコメントしたエラーを引き起こしていたし、今はうまくいきます。

for command in sqlCommands: 

    #print command 
    c.execute(command) 
    #fields = c.fetchall() 
    for row in c: 
     print (row) 
関連する問題