2012-12-13 14 views
7

Jak uzyskać dane wyjściowe z sql_query?instrukcje drukowania sql z pyodbc

import pyodbc 

sql_query = "print 'Hello World'" 

conn = pyodbc.connect("DRIVER={SQL Server}; 
SERVER=myserver; 
DATABASE=mydatabase; 
UID=myusername; 
PWD=mypassword") 

cur = conn.cursor() 

cur.execute(sql_query) 
cur.commit() 

for row in cursor.fetchall(): 
    print row 

Dotychczas Myślę, że druk SQL jest z zespołem od zwykłych reakcji strukturyzowanych?

http://www.easysoft.com/developer/languages/perl/sql_server_unix_tutorial.html#print_statement_status_messages ma coś podobnego do tego, co próbuję zrobić w Perlu.

Najbliższe, jakie widzę, to opcjonalne: http://www.python.org/dev/peps/pep-0249/#cursor-messages Więc domyślam się, że to po prostu nie jest realizowane?

+0

Na poziomie TDS. PRINT i RAISERROR() wysyłają wynik zapytania "w paśmie" wraz z zestawami wyników. Jednak dane nie są zestawami wyników TDS i wygląda na to, że sterownik nie obsługuje go prawidłowo. –

Odpowiedz

0

Użyj RAISERROR przez DRUKOWANIE. Użyj go z NOWAIT, aby natychmiast uzyskać wyjście. Nie wiem, jak sobie z tym poradzić w pythonie, ale w ADO.NET można użyć zdarzenia InfoMessage na SqlConnection. Być może jest coś podobnego w Pythonie.

0

Podczas uruchamiania zapytania PRINT 'Hello World' dane wyjściowe są zwracane jako wyjście konsoli (ciąg), a fetchall przegląda zestaw wyników (obiekt) z zapytania. RAISERROR jest warunkiem błędu i może zatrzymać proces. Nie mówię, że to nie jest rozwiązanie, ale może po prostu chcesz wydrukować opinię bez tworzenia warunku błędu.

myślę, że można osiągnąć rezultat szukasz zmieniając

[Print „Hello World”] do [Wybierz „Hello World”]

myślę, że to będzie utworzyć jeden wiersz danych w zestawie wyników z tekstem, który chcesz w nim znaleźć, który powinien pojawić się w pliku fetchall i sprawdzić, czy uzyskasz oczekiwane wyniki.

Mamy nadzieję, że pomoże to w rozwiązaniu alternatywnym!

Powiązane problemy