2017-05-02 3 views
1

Ich versuche SQL-Abfrage aus einer Datei in Python 2.7.13 auszuführen und den folgenden Fehler beim Anzeigen der Ergebnismenge zu erhalten. Die SQL-Anweisungen in der Datei sind einfach wie count (*) aus der Tabelle, aber wenn diese Logik funktioniert, muss ich sie durch komplexe Abfragen ersetzen.Python - Führen Sie mehrere SQL-Abfrage aus Datei

Fehler

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 Script:

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() 

Fehlermeldung

**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

Überprüfen Sie das Format für Abfragen in der Datei.Fügen Sie es zu der Frage hinzu. – shadow0359

+1

Lassen Sie Ihren Code die Abfragen anzeigen, während er sie ausführt, damit Sie wissen, welche Abfrage das Problem verursacht, und bearbeiten Sie dann Ihre Frage, um uns zu zeigen, wie diese Abfrage aussieht. –

+0

hinzugefügt die angeforderte Information der SQL-Datei & print-Anweisung in der Frage. – Rajeev

Antwort

0

fields = c.fetchall() hat den Fehler verursacht, ich habe es kommentiert und funktioniert jetzt gut.

for command in sqlCommands: 

    #print command 
    c.execute(command) 
    #fields = c.fetchall() 
    for row in c: 
     print (row) 
Verwandte Themen