В этой строке метод
fetchone()
возвращает один результат в виде кортежа полей, в вашем случае состоящего из одного элемента — значения поля
time
:
last_command_use_time = cursor.fetchone()
Поэтому вы можете извлечь из него первый элемент и положить его в
last_command_use_time
:
last_command_use_time = cursor.fetchone()[0]
Никогда не используйте f-строки или иной способ форматирования для подстановки значений в SQL-запросы: это может вызвать проблемы с безопасностью приложения. Как верно отметил
Vindicar, лучше использовать средства вашего драйвера СУБД для подстановки параметров в запросы (parametrized quieries).
К тому же, для ограничения частоты выполнения каких-либо действий в вашем приложении обычно лучше использовать решения на базе быстрых хранилищ "ключ-значение" вроде Redis или Memcached, чем на базе реляционных СУБД (коей является PostgreSQL).
Советую обратить внимание на инструмент
PyrateLimiter: он обеспечивает ограничение частоты выполнения функции (либо корутины, что может быть полезным в вашем случае) и в качестве хранилища может использовать оперативную память (
queue.Queue
), Redis или SQLite.