MakArtKar/forms_bot

при вызове функции get_user выдает ошибку

Closed this issue · 1 comments

при вызове функции get_user выдает ошибку

2020-06-25 17:50:55,683 (util.py:66 WorkerThread1) ERROR - TeleBot: "ProgrammingError occurred, args=('SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140503022049088 and this is thread id 140502923400960.',)
Traceback (most recent call last):
  File "/home/makart/.local/lib/python3.6/site-packages/telebot/util.py", line 60, in run
    task(*args, **kwargs)
  File "test.py", line 33, in make_form
    user = base.get_user(chat_id)
  File "/home/makart/forms_bot/db_worker.py", line 105, in get_user
    self.__insert_user_if_not_in_db(chat_id)
  File "/home/makart/forms_bot/db_worker.py", line 83, in __insert_user_if_not_in_db
    self.__db_cursor.execute("INSERT OR IGNORE INTO Users(chat_id) VALUES(?)", (chat_id,))
sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140503022049088 and this is thread id 140502923400960.
"

Originally posted by @MakArtKar in #2 (comment)

При таком коде

import telebot
from telebot import types

import config
from db_worker import DataBase, User, Form
from import_to_google_sheets import post_in_sheets

base = DataBase(config.DB_LOCATION)
bot = telebot.TeleBot(config.BOT_TOKEN)

@bot.message_handler(func=lambda message: True)
def main(message):
	user = base.get_user(message.chat.id)
	base.update_user(user)
	bot.send_message(message.chat.id, 'Привет')

if __name__ == '__main__':
    bot.infinity_polling()

выдает такую ошибку

2020-06-25 18:06:36,243 (util.py:66 WorkerThread2) ERROR - TeleBot: "ProgrammingError occurred, args=('SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140708057491264 and this is thread id 140707950450432.',)
Traceback (most recent call last):
  File "/home/makart/.local/lib/python3.6/site-packages/telebot/util.py", line 60, in run
    task(*args, **kwargs)
  File "error.py", line 13, in main
    user = base.get_user(message.chat.id)
  File "/home/makart/forms_bot/db_worker.py", line 105, in get_user
    self.__insert_user_if_not_in_db(chat_id)
  File "/home/makart/forms_bot/db_worker.py", line 83, in __insert_user_if_not_in_db
    self.__db_cursor.execute("INSERT OR IGNORE INTO Users(chat_id) VALUES(?)", (chat_id,))
sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140708057491264 and this is thread id 140707950450432.
"