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 的,我已经习惯把它放在一个函数中了。对不起)