Ошибка потоков при использование telebot и sqlite3

Есть класс DataBase и при вызове его метода из бота, написанного на pyTelegramBotAPI появляется ошибка, связанная с поточностью.

sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.
@bot.message_handler(commands=['start'])
def start(message):
    if db.check_user_by_username('Test'):
        bot.send_message(message.chat.id, 'Привет')
class DataBase:
    def __init__(self, db_file):
        self.conn = sql.connect(db_file)
        self.cur = self.conn.cursor()

    def check_user_by_username(self, username):
        with self.conn:
            result = self.cur.execute('SELECT * FROM users WHERE username = ?', (username,)).fetchall()
            return bool(len(result))

Переносить соединение в методы не желательно, потому что их больше десятка, просто check_same_thread=False тоже не желательно использовать т.к. важна сохранность данных, а threading.local как написано на хабре, я не понимаю как применить в данной ситуации. Какие еще есть вариаты решения проблемы или как можно доработать уже предложенные?


Ответы (0 шт):