2012-12-13 6 views
7

sql_query의 출력을 얻으려면 어떻게해야합니까?pyodbc의 sql print 문

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 

지금까지 나는 SQL 인쇄가 일반적인 구조 응답에서 밴드 중 생각?

http://www.easysoft.com/developer/languages/perl/sql_server_unix_tutorial.html#print_statement_status_messages에는 Perl에서 수행하려고하는 것과 비슷한 항목이 있습니다.

내가 볼 수있는 가장 가까운 옵션은 다음과 같습니다. http://www.python.org/dev/peps/pep-0249/#cursor-messages 그래서 구현되지 않았습니까?

+0

TDS 수준. PRINT와 RAISERROR()는 결과 세트로 "대역 내"질의 결과를 보낸다. 그러나 데이터는 TDS 결과 집합이 아니며 드라이버가 올바르게 처리하지 못하는 것처럼 보입니다. –

답변

0

PRINT보다 RAISERROR을 사용하십시오. 즉시 출력을 얻으려면 NOWAIT과 함께 사용하십시오. 나는 이것을 파이썬으로 처리하는 방법을 모르지만 ADO.NET에서는 SqlConnection에서 InfoMessage 이벤트를 사용할 수 있습니다. 어쩌면 파이썬에서 비슷한 것이있을 수 있습니다.

0

PRINT 'Hello World'쿼리를 실행하면 콘솔 출력 (문자열)으로 출력이 반환되고 fetchall은 쿼리에서 결과 집합 (개체)을 검토합니다. RAISERROR는 오류 조건이며 프로세스를 중지 할 수 있습니다. 나는 이것이 해결책이 아니라는 것을 말하는 것이 아니라 에러 상태를 생성하지 않고 피드백을 출력하기를 원할 것입니다.

난 당신이 내가이 한 행의 데이터를 생성합니다 생각

를 [ '안녕하세요'를 선택] 당신이

[PRINT '안녕하세요 세계'] 변경하여 찾고있는 결과를 얻을 수 있다고 생각 당신이 원했던 텍스트가있는 결과 세트에서, 그것은 fetchall에 나타나야하고, 당신이 기대하는 결과를 얻었는지 확인하십시오.

시도해 볼 수있는 대안을 제공하는 데 도움이되는 희망!