Форум сайта python.su
0
Добрый день!
Помогите с решением задачи, не понимаю как сделать цикл, чтобы проверял наличие записей в строке и если есть, переходил на следующую и добавлял туда свежие данные из базы.
То есть, каждый раз, когда выполняется скрипт, создавалась новая строка ниже с данными, сохраняя предыдущие записи.
from datetime import datetime import xlwt import cx_Oracle dsn_tns = cx_Oracle.makedsn('host', 'port', 'sid') db = cx_Oracle.connect('test', 'test', dsn_tns) cursor = db.cursor() cursor.execute('select count(c.DATE) from test_1 c where c.DATE > TRUNC(SYSDATE)') for sql_row in cursor: print(sql_row[0]) book = xlwt.Workbook() sheet = book.add_sheet('Test') style = xlwt.XFStyle() style.num_format_str = 'D-MMM-YY' sheet.write(0, 0, datetime.now(), style) sheet.write(0, 1, sql_row[0]) book.save('sql-test.xls')
client_count = None for sql_row in cursor: if client_count is None: client_count = sql_row[0] print(sql_row[0]) sheet.write(0, 1, client_count)
Отредактировано korad (Ноя. 17, 2016 14:22:23)
Офлайн
0
Сделал так, работает, но sql_row всеравно подсвечивается, как исправить?
from xlutils.copy import copy from datetime import datetime import cx_Oracle import xlwt import xlrd def get_clients_count(): cursor = db.cursor() cursor.execute('select count(c.DATE) from test_1 c where c.DATE > TRUNC(SYSDATE)') for sql_row in cursor: print(sql_row[0]) return sql_row[0] dsn_tns = cx_Oracle.makedsn('host', 'port', 'sid') db = cx_Oracle.connect('test', 'test', dsn_tns) clients_count = get_clients_count() style = xlwt.XFStyle() style.num_format_str = 'D-MMM-YY' wb = xlrd.open_workbook('sql-test.xls', formatting_info=True) r_sheet = wb.sheet_by_index(0) r = r_sheet.nrows book = copy(wb) sheet = book.get_sheet(0) sheet.write(r, 0, datetime.now(), style) sheet.write(r, 1, clients_count) book.save('sql-test.xls')
Отредактировано korad (Ноя. 17, 2016 17:41:02)
Офлайн