Контакты

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (21)

Лучшие ответы пользователя

Все ответы (35)
  • Можно использовать sqlite3 в асинхронном боте?

    @DollaR84
    Если ваша бд сильно нагружена, то действительно лучше использовать специализированные продукты типа postgres. Но в ином случае многие sqlite сильно недооценивают.
    Эта база может и простая, но имеет много возможностей, о которых большинство и не задумываются.
    Во первых, есть несколько вариантов указания работы с многопоточностью, указывается при сборке библиотеки, по умолчанию sqlite3.dll собрана с многопоточным доступом.
    https://www.sqlite.org/threadsafe.html
    Во вторых, у sqlite есть набор интересных ключей при открытии прагмы. Советую использовать, как минимум, journal_mode='wal'. Это освободит запросы чтения от ожидания завершения запросов записи.
    Также есть прагма threads, указывающая сколько лимитов потоков можно создавать, по умолчанию стоит 0, можно увеличить данное число.
    Со всеми прагмами можно ознакомиться тут: https://www.sqlite.org/pragma.html
    В третьих, если вы работаете с базой не напрямую запросами, а через какую-то ORM, то у них тоже могут быть дополнительные опции для потокобезопасности. Например, в простой ORM peewee при открытии базы, наряду с прагмами можно также указать флаг: thread_safe=True. Не разбирал подробности как он работает, но думаю он использует в своей работе ту же прагму threads.
    Поэтому все зависит от нагрузки и роли базы в ваших ботах. В некоторых задачах sqlite оправданный выбор. Надо подбирать инструмент под задачу.
    Ответ написан
  • Почему дропается база Sqlite на heroku?

    @DollaR84
    На heroku нельзя использовать файлы, так как используется виртуальная файловая система, которая минимум раз в сутки перезапускается. Об этом они сразу предупреждают в описании. На heroku предоставляется база даже в случае бесплатного доступа для обучения, правда всего 5Мб вроде в пакете hobby-dev. Остальные варианты за деньги также можно. Если же вам нужно обязательно использовать файл sqlite - то тогда надо искать другой хостинг, heroku не подойдет.
    Ответ написан
    5 комментариев
  • Как получить данные из JSON с помощью Python?

    @DollaR84
    import json
    with open('file.json', 'r') as f:
        c = json.load(f)['a']['c']
        print(c)
    Ответ написан
    3 комментария
  • Я не могу понять в чем проблема в моём коде?

    @DollaR84
    У вас неправильно написаны конструкторы классов.
    У всех классов методы:
    _init_
    надо заменить на:
    __init__
    Разница в том, что там по два символа подчеркивания и спереди слова и сзади.
    И у методов __lt__ и __gt__ тоже самое.
    У всех служебных методов не один символ подчеркивания спереди и сзади, а по два символа.
    Да, кстати, и метод __lt__ правильно писать с буквой "l", а не __it__.
    Короче, просто много синтаксических ошибок от невнимательности.
    Да и еще, метод __repr__ тоже пишется по два символа подчеркивания с двух сторон. И плюс код в этом методе нерабочий, с ошибками, но то уже другой вопрос, думаю там сами разберетесь по трейсбеку.
    Ответ написан
    Комментировать
  • Pygame. Как сделать округлые углы у прямоугольника?

    @DollaR84
    можно ли рамки и заливку прямоугольника сделать разными цветами, если да, то как?

    Тут все просто, конструктор прямоугольника имеет вид:
    pygame.draw.rect(surface, color, (x1, y1, size_x, size_y), width)
    То, что вас интересует, кроется в последнем параметре width.
    Если он задан то рисуется рамка прямоугольника заданной ширины, если его не задать, то рисуется прямоугольник с заливкой.
    Например, чтобы нарисовать прямоугольник, у которого рамка и заливка будут разных цветов, надо нарисовать два прямоугольника:
    pygame.draw.rect(surface, color1, (x1, y1, size_x, size_y))
    pygame.draw.rect(surface, color2, (x1, y1, size_x, size_y), width)


    С закругленными углами сложнее.
    Думаю там нужна работа с масками.
    Ответ написан
    Комментировать