Ошибка потоков при использование 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
как написано на хабре, я не понимаю как применить в данной ситуации. Какие еще есть вариаты решения проблемы или как можно доработать уже предложенные?