Не могу увидеть вывод запроса БД в python - PullRequest
3 голосов
/ 15 февраля 2011

Я выполняю простой запрос mssql из python.Я вижу в профилировщике, что запрос достигает БД.На запрос есть 1 строка ответа.Я не вижу вывод в оболочке 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 ]

3 голосов
/ 15 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...