Уведомления

Группа в Telegram: @pythonsu

#1 Март 23, 2016 13:08:25

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать цикл по полю из полученного массива



Суть задачи. В БД находится список заказов и время регистрации одним сервером по ним.
В лог-файле содержится тот же список заказов и время регистрации другим сервером по ним.

Мне нужно вывести все те номера заказов, что есть по селекту из БД и время по ним из лога.

Мой код возвращает только последний номер заказа и время по нему. Но по селекту возвращается рандомное количество строк. Понимаю, что нужно пронумеровать кол-во заказов и дальше сделать цикл по поиску в логе. Но не совсем понимаю как. Помогите, пожалуйста.

con = fdb.connect(host='host', database='database',
                  user='USER', password='pass'
                  )
cursor = con.cursor()
cursor.execute("""Select OrderID, Reg_time from orders where reg_time between current_DATE and   current_date+1""")
for o_id, r_time in cursor.fetchall():
    print (o_id, r_time)
with open('orders.LOG', 'r') as f:
        if str(o_id) in line:
            r_time_l1= (int(line[20:23:1]))
            r_time_l2= (int(line[97:100:1]))
            print (o_id, r_time_l1, r_time_l2,)
cursor.close()
con.close()

Офлайн

#2 Март 23, 2016 14:32:19

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать цикл по полю из полученного массива

polinaruru
cursor.execute(“”“Select OrderID, Reg_time from orders where reg_time between current_DATE and current_date+1”“”)
а что такое вообще current_DATE?



Офлайн

#3 Март 23, 2016 14:35:34

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

как сделать цикл по полю из полученного массива

con = fdb.connect(host='host', database='database',
                  user='USER', password='pass'
                  )
cursor = con.cursor()
cursor.execute("""Select OrderID, Reg_time from orders where reg_time between current_DATE and   current_date+1""")
res = {}
for o_id, r_time in cursor.fetchall():
    res[o_id] = r_time
print(res)
with open('orders.LOG', 'r') as f:
        if str(o_id) in line:
            r_time_l1= (int(line[20:23:1]))
            r_time_l2= (int(line[97:100:1]))
            print (o_id, r_time_l1, r_time_l2,)
cursor.close()
con.close()



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#4 Март 23, 2016 14:57:55

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать цикл по полю из полученного массива

FishHook
это текущая дата в БД firebird. что-то типа аналога getdate в t-sql

ZerG. спасибо, добрый человек. только вот этот кусок все равно выдает только один заказ…

with open('orders.LOG', 'r') as f:
if str(o_id) in line:
r_time_l1= (int(line[20:23:1]))
r_time_l2= (int(line[97:100:1]))
print (o_id, r_time_l1, r_time_l2,)

Отредактировано polinaruru (Март 23, 2016 14:58:32)

Офлайн

#5 Март 23, 2016 16:30:07

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

как сделать цикл по полю из полученного массива

Ну так вы посмотрите что я исправил и сделайте так же!
Что же вы хотите если вы значение одной и той же переменной в цикле каждый раз переназначате? Оно вам и выдает всегда последний результат.

a = 1
a = 2
a = 3
print a
3



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Март 23, 2016 16:30:46)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version