Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2016 14:21:19

korad
Зарегистрирован: 2016-11-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Перейти на новую строку в Excel

Добрый день!
Помогите с решением задачи, не понимаю как сделать цикл, чтобы проверял наличие записей в строке и если есть, переходил на следующую и добавлял туда свежие данные из базы.
То есть, каждый раз, когда выполняется скрипт, создавалась новая строка ниже с данными, сохраняя предыдущие записи.

 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')

И еще вопрос, в 20 строке ругается на sql_row - this inspection warns about local variable referenced before assignment, если сделать так, то ошибка пропадает, на сколько правильное это решение? Как сделать правильно?

 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)

Офлайн

#2 Ноя. 17, 2016 17:36:23

korad
Зарегистрирован: 2016-11-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Перейти на новую строку в Excel

Сделал так, работает, но 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version