Auserum
@Auserum
Даю никому не нужные советы

Ошибка SQLite3 в Python. Как исправить?

Делаю простенький скрипт на python для авторизации пользователей.
Вот код:
import sqlite3
import sys

isuserlogin = False

with sqlite3.connect("users.db") as db:
	cursor = db.cursor()

	cursor.execute("""CREATE TABLE IF NOT EXISTS user(
		login TEXT,
		password TEXT
	)""")

	db.commit()


def start_register():

	new_login = str(input('Придумайте новый логин: '))
	new_pass = str(input('Придумайте новый пароль: '))

	cursor.execute(f"SELECT login, password FROM user WHERE login = '{new_login}' AND password = '{new_pass}'")

	if cursor.fetchone() is None:
		cursor.execute(f"INSERT INTO user VALUES (?,?)", (new_login, new_pass))
		cursor.commit()
		print('Вы успешно зарегистрированы: ')
		start_login()
	else:
		print('Такая запись уже существует')
		for i in cursor.execute('SELECT * FROM users'):
			print(i)

		values = [
			(new_login, new_pass, now_time)
		]

		cursor.executemany("INSERT INTO user(login, password, date_reg) values(?, ?, ?)", values)


def start_login():

	login_input = str(input('Введите логин: '))
	password_input = str(input('Введите ваш пароль: '))

	a = cursor.execute(f"SELECT login, password FROM user WHERE login = '{login_input}' AND password = '{password_input}'")
	db.commit() 

	if not cursor.fetchone():
		doregister = str(input('Пользователь с таким логином не найден. Провести регистрацию нового пользователя? [Y/N] '))
		if doregister == 'y' or 'Y' or 'д' or 'Д':
			start_register()
		else:
			if doregister == 'N' or 'n' or 'н' or 'Н':
				start_login()
			else:
				print('Команда не распознана!')
	else:
		print('Welcome')
		global isuserlogin
		isuserlogin = True
		

if isuserlogin == False:
	start_login()

if isuserlogin == True:
	print('OK!')


При попытке выполнения вылезает такая ошибка в консоли.
63ecfc130289c922898810.png

Предпосылок вроде нету, таблицы две и запросов два. Что не так?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Auserum
@Auserum Автор вопроса
Даю никому не нужные советы
А, все, не надо, я уже решил.
Надо было указать
cursor.execute(f"INSERT INTO user(login, password) VALUES (?,?)", (new_login, new_pass))

Вместо
cursor.execute(f"INSERT INTO user VALUES (?,?)", (new_login, new_pass))


И убрать cursor.commit()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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