Как сверить время из бд с текущим?

Есть некий телеграмм бот, который будет отправлять сообщения по времени,указаному в бд. Попытался сверить текущее время со временем из базы - не вышло. Вот код:

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

→ Ссылка