Задать вопрос
Ответы пользователя по тегу SQL
  • Python, VKBottle, SQL. Как ограничить доступ к команде на время?

    drygdryg
    @drygdryg
    Python-разработчик
    В этой строке метод 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.
    Ответ написан