Python 3 MySQL sql синтаксическая ошибка в отформатированной строке - PullRequest
0 голосов
/ 18 января 2019

Я играю с tkinter и MySQL и получаю сообщение об ошибке, когда пытаюсь выбрать что-то из базы данных. У меня такое чувство, что эта ошибка будет иметь какое-то отношение к моему ограниченному опыту работы с sql и / или tkinter ...

Итак, у меня есть кнопка tkinter, вызывающая функцию с именем "testUserCredentials":

# Creating the login button, giving it the text "Log In", and
btnLogIn = ttk.Button(self, text="Log In", command=lambda:
                      testUserCredentials(uNameTb.get(),
                      pwdTb.get()))

Насколько я понимаю, метод .get () захватывает текст, который пользователь вводит в текстовое поле. Затем вызывается testUserCredentials (uName, пароль), и в этом случае uName должно равняться «AbbieH», а пароль должен быть «pui8Aifi». Функция выполняет следующие действия:

def testUserCredentials(uName, password):

query = ("SELECT username, password FROM users WHERE username = %s, password = %s")
args = (uName, password)

sqlResult = sendSqlQuery(query, args)

Затем запускается функция, необходимая мне для связи с базой данных MySQL:

# Function for sending SQL queries to the MySQL database, accepts the query to
# be sent as a string
def sendSqlQuery(query, args):
    try:
        # Creating the connection string and parsing the details of which server
        # User to use, their password, the host for the connector to look at,
        # and lastly which database for them
        cnx = mysql.connector.connect(user='hireOut',
                                      password='>5/>£7(OW-1Bo>9e',
                                      host='localhost',
                                      database='hireout')

        # Creating a cursor to be able to iterate through any results that are
        # parsed back from the query
        cursor = cnx.cursor()
        # Telling the cursor to execute the query string
        cursor.execute(query, args)

        sqlResult = cursor.fetchall()

        for (username, password) in cursor:
            print("Username: %s" % username)
            print("Password: %s" % password)

        return sqlResult

        # using .is_connected() to check if the connection was made successfully
        if cnx.is_connected():
            print("Connection Established")

Итак, ошибка, которую я получаю, нажимая кнопку входа в систему, такова:

1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', password = 'pui8Aifi'' at line 1

Мое понимание синтаксиса MySQL заключается в том, что строки для оператора WHERE должны быть в одинарных кавычках, как я и думал, моя строка должна быть отформатирована как:

SELECT username, password FROM users WHERE username = 'AbbieH', password = 'pui8Aifi';

Эта строка в моей голове должна быть в порядке, и не выдавать ошибку ... но это делает ... Так чего мне не хватает?

Заранее спасибо за любую помощь

1 Ответ

0 голосов
/ 18 января 2019

Я думаю, вам нужно заменить вторую запятую на ключевое слово логического оператора: ГДЕ имя пользователя = 'AbbieH' И пароль = 'pui8Aifi';

...