Задать вопрос
Hackerman1
@Hackerman1
17 лет, плохое зрение.

Где мне указать db.connect(), чтобы он распространился на весь проект?

Здравствуйте. Я использую библиотеку peewee в качеств ОРМ для бота. Когда там действие доходит до взаимодействия с таблицами, то есть, .get или .create, то это может занимать до 15-20 секунд. Я предполагаю, что это связано с открытием соединения с БД. Если нет, то поправьте меня, пожалуйста. Модели находятся в отдельном файле, они импортируются в другие нужные места и там происходят get/create методы. Я попробовал открыть соединение единожды в самих моделях единожды, потому что я не знаю, как оно будет себя вести при импортах и мало ли будет несколько соединений конфликтовать и лочить БД. Не кидайтесь тапками за такие непонятки)

Код типо инициализации БД
def initialize_db():
    global db_initialized
    if not db_initialized:  # Проверяем, инициализирована ли база данных
        db.connect()
        db.create_tables([Referrer, Channels, BotTexts], safe=True)
        db_initialized = True  # Устанавливаем флаг в True

Пример применения моделей
def start_message(message):
    chat_id = message.chat.id
    args = extract_arguments(message.text)

    if Referrer.does_referrer_exist(chat_id):
        bot.send_message(chat_id, BotTexts.get(text_id=3).text)
        return

    if args:
        if Referrer.is_already_reffered(chat_id):
            bot.send_message(chat_id, BotTexts.get(text_id=4).text)
            bot.set_state(chat_id, UserState.AWAITING_NICKNAME, chat_id)
            return
        else:
            user = Referrer.get(user_id=int(args))
            user.add_referred_user(chat_id)
            bot.send_message(args, BotTexts.get(text_id=5).text)

Если дело действительно в длительном соединении с БД, то в каком файле мне нужно это сделать, чтобы соединение было для всех взаимодействий? Если же не в этом дело, то в чем? Если вдруг надо дополнить инфу, код - пишите, дам всё, что надо. Кроме токена :)
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы