@happyjuic

"не работает" база данных sqlite3?

Суть такова, создал простейшую базу данных, просто чтобы хранить логины и пароли, введенные через консоль. Но, при вводе данных и следующем из выводе, выводиться только последний введенный логин, будто я храню их не в базе данных, а в простой переменной. Кто подскажет, где моя ошибка?
P.s. мой код:
import sqlite3

sql = sqlite3.Connection('enter.db')
c = sql.cursor()
print('Подключение к базе данных проведено успешно!')

c.execute("""CREATE TABLE IF NOT EXISTS users (userlogin TEXT, password INTEGER, cash INTEGER)""")


sql.commit()

userlogin = input('Логин: ')
password = input('Пароль: ')

c.execute("SELECT userlogin FROM users")
if c.fetchone() is None:
    c.execute('INSERT INTO users VALUES (?, ?, ?)', (userlogin, password, 0))
else:
    print('Такой логин уже занят')
c.execute("SELECT * FROM users")
print(c.fetchall())
  • Вопрос задан
  • 350 просмотров
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Кто подскажет, где моя ошибка?

Ошибка в слове «выводиться», правильно писать «выводится», проверочное слово «что делает».
А ещё после отправки команды на изменение в sql (execute) наверно неплохо бы сохранять изменения командой commit.
Кроме того, проверяя наличие логина, надо запрашивать выборку с учётом искомого логина.
import sqlite3

sql = sqlite3.Connection('enter.db')
c = sql.cursor()
print('Подключение к базе данных проведено успешно!')

c.execute("""CREATE TABLE IF NOT EXISTS users (userlogin TEXT, password INTEGER, cash INTEGER)""")


sql.commit()

userlogin = input('Логин: ')
password = input('Пароль: ')

c.execute("SELECT userlogin FROM users where (?)", (userlogin,))
if c.fetchone() is None:
    c.execute('INSERT INTO users VALUES (?, ?, ?)', (userlogin, password, 0))
    sql.commit()
else:
    print('Такой логин уже занят')
c.execute("SELECT * FROM users")
print(c.fetchall())
Ответ написан
Ваш ответ на вопрос

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

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