MYSQL Ошибка 1054 (42S22): неизвестный столбец в предложении «где» - PullRequest
0 голосов
/ 29 марта 2020

Это скрипт, который я вызываю, чтобы получить номер телефона на основе имени пользователя через python, используя mysql


def get_number_based_on_phone( username):
    """get the username based on number"""

    sql = 'SELECT phone_number from user_data_base WHERE `user_name` = %s' % (username)
    db = dbq()
    phone_number = db.getFieldValue(sql)

    return phone_number


class dbq:

    def __init__(self):
        self._conn = mysql.connector.connect(user='xxx', password='xxx', host='127.0.0.1', database='users')

        self._cursor = self._conn.cursor(buffered=True)

    def closeConn(self):
        self._cursor.close()
        self._conn.close()

    def db_query(self, sql):
        self._cursor.execute(sql)
        rows = self._cursor.fetchall()
        df = DataFrame(rows, columns=self._cursor.column_names)
        return df

    def getFieldValue(self, sql):
        try:
            self._cursor.execute(sql)
            row = self._cursor.fetchone()
            if row is None:
                qid_value = ""
            else:
                if row[0] is None:
                    qid_value = ""
                else:
                    qid_value = str(row[0])
            return qid_value
        except Error as error:
            print(error)
        finally:
            self._cursor.close()
            self._conn.close()

Когда я вызываю функцию:

 get_number_based_on_phone("ODIN")

Полученное сообщение об ошибке:

1054 (42S22): Unknown column 'odin' in 'where clause'

Если я не передаю имя пользователя как переменную, а просто вызываю его как обычный запрос в mysql, то, похоже, проблем не возникает. «ODIN» является одним из имени пользователя в базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...