У меня есть набор метеорологических данных.
1. Запрос: Первый запрос возвращает мне список всех идентификаторов и идентификаторов для активных автоматических измерительных станций
sql_boberamp = """select a.id, a.idmm
from id_obs a, idmm b
where a.tip=4 and
a.datum_konca='10000-1-1'
and b.idmm=a.idmm and a.id in
(select c.id
from parametri c
where c.id_parametra>3005 and
c.datum_konca='10000-1-1') order by
a.idmm"""
cur1.execute(sql_boberamp)
boberamp_lst = cur1.fetchall()
Идентификатор столбцова idmm можно превратить в словарь
2. Запрос: я передаю 3 параметра.Запрос рассчитывает на один ампер, сколько раз каждый наблюдаемый параметр был измерен для определенного дня.
ids = 2210
idmms = 11
params = idmms, idmms, idmms, ids
testtable_sql = []
sql_stevec = """select a.id_parametra,
case when a.id_parametra in
(3005,3010,3011,3040,3045,3046,3047, 3391)
then (select count(*) from amp_o b where
b.datum='2018-04-16' and b.par=a.id_parametra
and b.tip=4 and b.idmm=%s)
when a.id_parametra in (3120, 3121, 3124, 3420)
then (select count(*) from amp_p_10min b where
b.datum='2018-04-16' and b.par=a.id_parametra
and b.tip=4 and b.idmm=%s)
when a.id_parametra in (3180, 3181, 3188, 3189)
then (select count(*) from amp_v b where
b.datum='2018-04-16' and b.par=a.id_parametra
and b.tip=4 and b.idmm=%s)
end as stevec
from parametri a
where a.id=%s and datum_konca='10000-1-1' and
a.id_parametra>3000
order by a.id_parametra"""
cur.execute(sql_stevec,params)
testlist2_sql = cur.fetchall()
testtable_sql.append(testlist2_sql)
Моя цель - запустить запрос 3.
3 Запрос: этот цикл FOR должен выполнить запрос 2 (запрос рассчитывает на один ампер, сколько раз измерялся каждый измеряемый параметр для конкретногодень) для всех моих рабочих усилителей.
ids = [2210, 2662,872]
idmms = [11,1948, 907]
testtable_for_sql = []
for row in ids:
ids_row = ids[0]
for row in idmms:
idmms_row = idmms[0]
params = idmms_row, idmms_row, idmms_row, ids_row
print(params)
cur.execute(sql_stevec,params)
testlist_for_sql = cur.fetchall()
testtable_for_sql.append(testlist_for_sql)
print('---- inside FOR loop ----',testtable_for_sql)
print('---- outside FOr loop ----',testtable_for_sql)
Это мой результат:
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
(11, 11, 11, 2210)
('---- inside FOR loop ----', [])
('---- outside FOr loop ----', [])
Я не понимаю, почему он не проходит все три строки в моих данных для идентификаторов и идентификаторов.Я просто могу взломать этот цикл FOR в скрипте Python.Большое спасибо за вашу помощь.