sqlite3.ProgrammingError: указано неверное количество привязок. Текущий оператор использует 7, и есть 1 предоставленный - PullRequest
0 голосов
/ 26 марта 2020

В настоящее время я работаю над системой членства в тренажерном зале в tkinter и sqlite3. У меня есть эта постоянная ошибка, и я не знаю, что не так. Я не могу понять, почему указано неверное количество привязок.

def new_user(self):
    #Establish Connection
    with sqlite3.connect('Gym.db') as db:
        c = db.cursor()

    #Find Existing username if an action is taken

    find_user = ('SELECT * FROM member WHERE username = ?')
    c.execute(find_user,[(self.n_Username.get())])
    if c.fetchall():
        ms.showerror('Error!','Username Taken Try a Diffrent One.')

    else:
        ms.showinfo('Success!','Account Created!')
        self.main_page()

    sql = "INSERT INTO 'Member' (FirstName,LastName,Email,Phone,Balance,Username,Password) VALUES(?,?,?,?,?,?,?)" #<-------
    c.execute(sql,[(self.n_FirstName.get(),self.n_LastName.get(),self.n_Email.get(),self.n_Phone.get(),self.n_Balance.get(),self.n_Username.get(),self.n_Password.get())])
    db.commit()

Ошибка:

sqlite3.ProgrammingError: Неправильное количество предоставленных привязок. В текущем операторе используется 7, и есть только 1

1 Ответ

0 голосов
/ 26 марта 2020

Вы предоставляете список, содержащий один кортеж в качестве второго аргумента для метода execute. Это приводит к проблеме «1 поставлено», так как кортеж в списке считается просто одной привязкой.

Вместо этого удалите список и просто пропустите содержащийся кортеж. т.е.

c.execute(sql,
          [(self.n_FirstName.get(), 
            self.n_LastName.get(),
            self.n_Email.get(),
            self.n_Phone.get(),
            self.n_Balance.get(),
            self.n_Username.get(),
            self.n_Password.get()
          )]
)

должно быть:

c.execute(sql,
          (self.n_FirstName.get(), 
           self.n_LastName.get(),
           self.n_Email.get(),
           self.n_Phone.get(),
           self.n_Balance.get(),
           self.n_Username.get(),
           self.n_Password.get()
          )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...