У меня есть фрейм данных, который извлекает данные из SQL и отправляет электронное письмо в зависимости от состояния столбца. Но эти столбцы отсутствуют в SQL, мне нужно создать их после создания фрейма данных. Проблема здесь в том, что у меня есть цикл while, где он проверяет состояние столбца каждые 10 секунд. Я заметил, что цикл while отлично работает со всеми условиями, но фрейм данных не обновляется из SQL, поскольку он находится вне цикла while. Если я помещаю фрейм данных в цикл while, last_email_sent
инициализируется как None
и выдает неправильный вывод. Ниже мой псевдокод, в котором описана логика.
#initialisation and fetching of the table from SQL
df = pd.read_sql('SELECT * FROM stations', cnxn)
df['Timeflag'] = now - df['last_reported']
df['last_email_sent'] = None
while True:
for index in df.index:
if(df['Timeflag'] == 1 and df.loc[df.index[index], "Last_email_sent"] is None:
print('pass')
minutes = divmod((now - df.loc[index, "Last_email_sent"]).total_seconds(), 60)[0]
elif df.loc[index, 'Time flag'] == 1 and minutes < min:
print('fail')
minutes = divmod((now - df.loc[index, "Last_email_sent"]).total_seconds(), 60)[0]
else:
print('false')
time.sleep(10)
Проблема в том, что я не могу сделать что-то подобное ниже, поскольку внутри цикла for last_email_sent
не может быть None
, и он должен сохранятьпоследнее обновленное значение, которое было распространено после 1-й итерации цикла while.
while True:
#initialisation and fetching of the table from SQL
df = pd.read_sql('SELECT * FROM stations', cnxn)
df['Timeflag'] = now - df['last_reported']
df['last_email_sent'] = None
Есть ли какой-либо другой метод для вызова фрейма данных внутри цикла for и, таким образом, одновременного вычисления других столбцов?