Как сверить время из бд с текущим?
Есть некий телеграмм бот, который будет отправлять сообщения по времени,указаному в бд. Попытался сверить текущее время со временем из базы - не вышло. Вот код:
def sending():
time = datetime.datetime.now().time()
conn = sqlite3.connect("list.db")
c = conn.cursor()
sql = "SELECT text FROM 'user_message' where time_={}".format(
time)
c.execute(sql)
text = str(c.fetchone())
bot.send_message(chat.id, text, reply_markup=keyboard)
print('Начало работы')
if __name__ == '__main__':
sending()
init_db()
bot.polling(none_stop=True, interval=0, timeout=2)
Выбило ошибку. Как исправить?
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Лучше привыкнуть параметры в sql передавать через связывание/binding (погуглите про sql-инъекции):
sql = "SELECT text FROM 'user_message' where time_=?"
c.execute(sql, [time])
UPD.
Тип datetime.time похоже не поддерживается драйвером, попробуйте передать время в формате, поддерживаемом SQLITE3, например HH:MM:SS:
time = datetime.datetime.now().strftime('%H:%M:%S')
...
Но можно и так (не рекомендую):
sql = "SELECT text FROM 'user_message' where time_='{}'".format(time)
c.execute(sql)
PS.
Скорее всего и тут time придется как выше привести к HH:MM:SS
