2013-03-19 2 views
1

У меня есть кусок кода вида:Живой выхода из запроса к базе данных Python

conn=sybpydb.connect(user=args.u, password=args.p,servername=args.s) 
cur = conn.cursor() 
cur.execute(sql) 
print(cur.connections.messages) 

Выполнить занимает, может быть, 5 минут для запуска, а затем печатает мой вывод. Мне было интересно, есть ли способ распечатать выходную строку для строки во время выполнения, вместо того, чтобы ждать, пока это будет сделано, и получить все как одну большую партию?

+0

Вы пытались перебрать курсором? – filmor

+0

Я думаю, вам нужно что-то вроде серверной функции курсора. Например, интерфейс MySQLdb поддерживает его: http://stackoverflow.com/questions/337479/how-to-get-a-row-by-row-mysql-resultset-in-python. Не уверен, может ли sybpydb обработать ваш случай. – alecxe

+0

Что вы имеете в виду, когда говорите, перебираете курсор? –

ответ

0

filmor is right: получение результатов, выполняющихся на курсоре.

Пакет sybpydb представляет собой реализацию PEP 249, предоставляемую Sybase. Таким образом, объект Cursor, который вы извлекаете, имеет некоторые методы, например fetchone и fetchall.

Ваш код, чтобы получить результаты построчно и сделать что-то с ним, было бы:

# Preparation your connection and cursor for fetching results 
conn = sybpydb.connect(user=args.u, password=args.p, servername=args.s) 
cur = conn.cursor() 
cur.execute(sql) 

# Reading result one by one 
for row in cur.fetchone(): 
    # Do something with your current results 
    print(row) 

# Closing cursor and connection 
cur.close() 
conn.close() 
Смежные вопросы