2011-02-15 7 views
3

파이썬에서 간단한 mssql 쿼리를 실행하고 있습니다. 프로파일 러에서 쿼리가 DB에 도달했음을 알 수 있습니다. 쿼리에 1 행의 답변이 있습니다. 내가 파이썬에서 출력 내가 파이썬에서 DB 쿼리 출력을 볼 수 없습니다.

import pymssql 
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True) 
cur = conn.cursor() 
cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe') 
for row in cur:  
    print "ID=%d, Name=%s" % (row['id'], row['name']) 

는 탄원이 감사 조언

아래의 코드를 실행

쉘 볼 실패, 아사 프

답변

3

당신은 후 해당 쿼리에서 데이터를 가져 오기 위해 실행) fetchone() 또는 fetchall을 (호출 할 수 있습니다.

import pymssql 
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True) 
cur = conn.cursor() 
cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe') 
print cur.fetchall() 
1
import pymssql 
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True) 
cur = conn.cursor() 
users = cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe').fetchall() 
conn.close() 

for row in users:  
    print "ID=%d, Name=%s" % (row['id'], row['name']) 

뭔가 결과를 할당하는 대신 사용해보십시오 커서.

cur.execute()은 함수로서, 값을 반환하는 동안 (아무리 보아도) 아무 것도 지정하지 않으므로 for 루프를 수행 할 때 루프를 실행할 필요가 없습니다. 당신이 결과를 저장하지 않으려면

것은,이 (오히려 지저분) 버전 할 수있는 :

import pymssql 
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True) 
cur = conn.cursor() 
sql = 'SELECT * FROM persons WHERE salesrep=%s' 

for row in cur.execute(sql, 'John Doe').fetchall(): 
    print "ID=%d, Name=%s" % (row['id'], row['name']) 

conn.close() 

이 하나가 cur.execute()의 결과를 통해 for 루프를 않습니다,하지만 난 정말에 대한 조언 이

(마이너 부록 : 나는 fetchall 년대를 잊고, 정말 기능이 퍼팅에 사용 해요 죄송합니다.)

+0

Fetchall()이 실패합니다. 다음 오류가 발생합니다. – user617861

+0

어떤 오류가 있습니까? 나중에 그것을 게시해야합니다 :) – TyrantWave

관련 문제