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'а, я так привык вставлять это в функцию. Извините)