2011-02-15 71 views
3

我從python執行一個簡單的mssql查詢。 我可以在分析器中看到查詢到達數據庫。 該查詢有1行答案。 我看不出在Python輸出外殼在Python中看不到數據庫查詢輸出

我運行下面

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

這人做了for環比cur.execute()的結果,但我真的建議反對這

(小編:我忘了使用fetchall的,我是如此習慣於這種在功能對不起。)

+0

Fetchall()失敗,出現以下錯誤: – user617861 2011-02-15 21:51:52