У вас уже есть 2 отличных ответа, поэтому я собираюсь предложить другой подход.Это можно решить на уровне запросов, если предположить, что вы на самом деле выбираете только эти 2 столбца с логикой, которую вы нам показали.
Это может повысить производительность, если в таблице много строк:
cur.execute('SELECT CASE WHEN T < 1 THEN p WHEN T > 1 THEN 0 END FROM W')
data = cur.fetchall()
Тогда вам не нужен цикл, поскольку data
уже содержит то, что вам нужно.Просто имейте в виду, что этот запрос вернет None
для строк, в которых T == 1
, но это можно легко обработать с помощью другого WHEN
.