Функция MySQL возвращает неопределенное значение, но подключается

socket - это модуль, содержащий класс socket.

Вам нужно сделать socket.socket(...) или from socket import socket:

>>> import socket
>>> socket
<module 'socket' from 'C:\Python27\lib\socket.pyc'>
>>> socket.socket
<class 'socket._socketobject'>
>>>
>>> from socket import socket
>>> socket
<class 'socket._socketobject'>

Обратите внимание, что ошибка здесь довольно легко понять: если module object is not callable, вы, вероятно, называете объект модуля! Что такое объект модуля? Это тот тип, который вы получаете при импорте модуля.

Но даже если вы этого не понимаете (это нормально, это часто путает, что классы, модули, функции и т. Д. - все это просто объекты, как все else), есть довольно простой способ начать отладку:

  • «Хм, module object is not callable. Похоже, я пытаюсь назвать то, что вы не можете назвать. Интересно, что я
  • «О, я звоню socket. Это должно быть вызываемым! Интересно, является ли переменная socket тем, что я думаю?`
  • print socket
1
задан L Ja 18 March 2019 в 16:57
поделиться

1 ответ

Проблема в том, что вы возвращаете true/false в рамках обратного вызова .connect.

Вы можете предоставить обратный вызов вашего метода Connect, который даст вам статус соединения.

Connect(callback) {
    // <Snip>
    this.connection.connect(function(thrownError) {
        console.log(thrownError);
        if(thrownError == null) {
            return callback(true);
        } else {
            return callback(false);
        }
    });
 }

 // Elsewhere
 MYSQL.Connect(status => {
    if (status) {
        Log.Info("Successfully connected to database");
    } else {
        Log.Critical("Error connecting to database");
    }
}

В мире узлов общая закономерность состоит в том, что обратный вызов принимает форму function(error, result), и вы проверяете, имеет ли error значение, прежде чем продолжить.

Здесь статья о обратных вызовах.

0
ответ дан Joey Ciechanowicz 18 March 2019 в 16:57
поделиться
Другие вопросы по тегам:

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