@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.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
@galaxy
Поля-то какие в таблице data?
Скорее всего, такой код должен быть:
if password2 == password1:
    cur.execute("INSERT INTO data VALUES(?,?,?)", (login,email,password1))
Ответ написан
hottabxp
@hottabxp Куратор тега Python
Миллиардер. Честно, 100 пистонов!
В строке
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()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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