我从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'])
请求建议 谢谢, 阿萨弗
答案 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()
的结果,但我真的建议反对这个
(次要补遗:我忘记了胎儿的问题,我已经习惯了把它放在一个功能中。抱歉)