mysql.connector.errors.ProgrammingError: 1054 (42S22): неизвестный столбец «X» в «предложении where» - PullRequest
1 голос
/ 18 мая 2019

Это мой сценарий:

import mysql.connector
def loginsystem():
    db = mysql.connector.connect(host="127.0.0.1",
                                 user="root",
                                 passwd="",
                                 db="dbpython")

    cursor = db.cursor()

    loop = 'true'
    while (loop == 'true'):
        username = str(input("Username : "))
        password = str(input("Password : "))

        if (cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s"%(username,password))):

            print("Logged İn")
        else:
            print("Failure")
    db.commit()
loginsystem()

Я устанавливаю онлайн-систему, но у меня возникла проблема с системой входа в систему.Как исправить «Неизвестный столбец« x »в предложении where» или у вас есть другие предложения по коду?

if (cursor.execute("SELECT * FROM users WHERE (username =?  password = ?) VALUES(?,?)"(username,password))):

Я пытался сделать это с помощью этого метода, но не

Traceback (most recent call last):
  File "C:/Users/artun/PycharmProjects/DENEMELER/Login System.py", line 21, in <module>
    loginsystem()
  File "C:/Users/artun/PycharmProjects/DENEMELER/Login System.py", line 15, in loginsystem
    if (cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s"%(username,password))):
  File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\connection.py", line 553, in cmd_query
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  File "C:\Users\artun\PycharmProjects\DENEMELER\venv\lib\site-packages\mysql\connector\connection.py", line 442, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'oziboran123' in 'where clause'

Process finished with exit code 1

это вывод кода, но я ожидал, что вывод кода будет "Logged In" или "Failure"

1 Ответ

0 голосов
/ 19 мая 2019

Рассмотрим параметризацию, а не интерполяцию строк, которая включает в себя двухэтапный процесс подготовки оператора и затем выполнение, которое связывает параметры. Ниже используются два аргумента вызова execute: cursor.execute(query, params). Кроме того, пользователь и пароль являются зарезервированными словами в MySQL, которые следует экранировать обратными чертами.

Обратите внимание, что параметр-заполнитель %s для mysql.connector API не следует путать с символом формата строки Python по модулю (который, кстати, является менее предпочтительным предпочтительным методом форматирования строки в Python для более предпочтительный str.format).

# PREPARED STATEMENT
sql = """SELECT * FROM `users`
         WHERE `username` = %s AND `password` =%s
      """

# EXECUTE WITH PARAMS
cursor.execute(sql, (username, password))
...