在python中看不到DB查询输出

时间:2011-02-15 13:50:20

标签: python pymssql

我从python执行一个简单的mssql查询。 我可以在分析器中看到查询到达数据库。 该查询有1行答案。 我没有看到Python shell中的输出

我运行下面的代码

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']) 

请求建议 谢谢, 阿萨弗

2 个答案:

答案 0 :(得分: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 :(得分: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()的结果,但我真的建议反对这个

(次要补遗:我忘记了胎儿的问题,我已经习惯了把它放在一个功能中。抱歉)