@Ivan_sneg

Ошибка при работе с Sqlite.Поможите исправить?

Ошибка на ровном месте.Не знаю как пофиксить помогите.
def reg(self):
login = self.root.a_in_class.text
email = self.root.b_in_class.text
password1 = self.root.c_in_class.text
password2 = self.root.d_in_class.text
conn = sqlite3.connect("users.db")
cur = conn.cursor()
list = [login,email,password1]
if password2 == password1:
for item in list:
print(item)
cur.execute("INSERT INTO data VALUES(?,?,?)", (item, ))
conn.commit()

Вот и ошибка:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 3, and there are 1 supplied.
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
@galaxy
Поля-то какие в таблице data?
Скорее всего, такой код должен быть:
if password2 == password1:
    cur.execute("INSERT INTO data VALUES(?,?,?)", (login,email,password1))
Ответ написан
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
В строке
cur.execute("INSERT INTO data VALUES(?,?,?)", (item, ))
кроме item должны быть еще 2 параметра.
Вы вообще в курсе как работают списки, sqlite?

Думаю, вместо этого:
list = [login,email,password1]
if password2 == password1:
for item in list:
print(item)
cur.execute("INSERT INTO data VALUES(?,?,?)", (item, ))
conn.commit()

должно быть что-то вроде:
if password2 == password1:
	cur.execute("INSERT INTO data VALUES(?,?,?)", (login,email,password1,)) # Только поменять параметры местами
	conn.commit()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы