Я думаю, что значение будет правильным словом.Пожалуйста, измените, если нет.
Содержание:
Задача 1 (строка не находится в базе данных постоянно)
Задача 2 (идея для задачи 1)
Я создаю программу, которая добавляет строку в таблицу в базе данных, используя Sqlite3 в Python3.Я использую функцию, которая запрашивает у вас пароль.Позже, желая вызвать функцию, если введенная строка равняется чему-либо в базе данных (если она не совпадает с чем-либо в базе данных, мы вставляем ее в таблицу паролей).
Проблема 1:
Проблема в том, что когда я прекращаю запуск программы и запускаю ее снова, строка не остается в базе данных, что приводит к тому, что я могу повторно ввести предыдущие пароли.Я хочу, чтобы программа сделала так, чтобы строка оставалась в базе данных после ее остановки.
Вот программа для абзаца выше: (ПРОКРУТКА ВНИЗ для идеидля задачи 1 )
import sqlite3
import hashlib
db = sqlite3.connect( "users.db" )
cur = db.cursor()
cur.execute( "CREATE TABLE IF NOT EXISTS passwords( pwd TEXT, UNIQUE( pwd ))" )
def password():
pwd = input( "password: " )
sha = hashlib.sha256( pwd.encode( 'utf-8' )).hexdigest()
cur.execute( "INSERT INTO passwords VALUES( ? )", ( sha, ))
while True:
try:
password()
#break
except KeyboardInterrupt:
print( "aborted" )
break
except sqlite3.IntegrityError:
print( "cannot reuse that password" )
db.commit()
db.close()
=========================================================================== Задача 2: (Идеядля задачи 1)
Вот обновленная версия.Здесь я пытаюсь добавить строку в таблицу базы данных, если она совпадает или не соответствует ни одной из строк.ошибка, которую я имею здесь, в том, что pwd не является переменной в строке 13, хотя у меня она есть как единая и я установил ее как глобальную переменную.Если вы хотите помочь в решении этой проблемы, я хотел бы знать, почему pwd не является переменной и как ее сделать.
import sqlite3
import hashlib
db = sqlite3.connect( "used_passwords.db" )
cur = db.cursor()
cur.execute( "CREATE TABLE IF NOT EXISTS passwords( pwd TEXT, UNIQUE( pwd ))" )
def password():
global pwd
pwd = input( "password: " ) #turn this into a global variable
sha = hashlib.sha256( pwd.encode( 'utf-8' )).hexdigest()
cur.execute( "INSERT INTO passwords VALUES( ? )", ( sha, ))
while True:
#take pwd from password and put it here
sha = hashlib.sha256( pwd.encode( 'utf-8' )).hexdigest()
try:
password()
#break
except KeyboardInterrupt:
print( "aborted" )
break
except sqlite3.IntegrityError:
print( "cannot reuse that password" )
cur.execute( "INSERT INTO passwords VALUES( ? )", ( sha, ))
db.commit()
db.close()