无法在Python中查看数据库查询输出
我在用Python执行一个简单的mssql查询。
我在监控工具中看到这个查询已经到达数据库。
这个查询返回了一行结果。
但是我在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'])
请给我一些建议。
谢谢,
Assaf
2 个回答
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
了,我习惯把这个放在一个函数里。抱歉)
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()