2011-02-15 67 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