@venera060

System error: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом. Как решить?

основная функция для выбора вопроса и ответов:
def game(n):
    db_work = mySQL()

    rq = db_work.select_q(n)    #строка с вопросом
    ra = db_work.select_a(n)    #строки с ответами

    marcup = utils.answers_marcup(ra) #заполнение клавиатуры ответами

    bot.send_message(user_id, rq[1], reply_markup=marcup)

    db_work.close()


Запросы в бд:
1 запрос работает корректно а 2 крашится

def __init__(self):
        self.connection = mysql.connector.connect(host="localhost", user="root", passwd="123", db="test_db")
        self.cursor = self.connection.cursor()

    def select_q(self, id):
        with self.connection:
            self.cursor.execute('SELECT * FROM questions WHERE id = ' + str(id))
            return self.cursor.fetchone()


    def select_a(self, id_q):
        with self.connection:
            self.cursor.execute('SELECT answer FROM answers WHERE id_q = ' + str(id_q))
            return self.cursor.fetchall()


Если во 2 запросе поставить * или указать только 1 строку вместо нескольких, выдает ту же ошибку
5fe0d318510d3301143456.png
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вы не понимаете как работает with? Вызов select_q закрывает self.connection. Попытка в select_a читать из закрытого соединения приводит к ошибке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы