У меня есть 2 метода класса. Один метод accountExistance () проверяет, существует ли учетная запись, путем поиска повторяющегося имени пользователя в базе данных, а другой метод customerDetails () записывает сведения о регистрации пользователя в базу данных. Мой метод customerDetails () вызывает метод accountExistance (), и если есть повторяющееся имя пользователя, которое проверяется в методе accountExistance, я возвращаю False и возвращаюсь в исходном методе, если возвращаемое значение равно False sys.exit ()' происходит.
Проблема заключается в том, что я не хотел бы выходить из программы, поскольку она запускает графический интерфейс tkinter, позволяя пользователю изменять регистрационные данные. Скорее, есть ли способ вместо того, чтобы выйти, я могу отменить выполнение там, где оно есть, и не отправлять повторяющиеся значения в базу данных.
Отметим, что customerDetails () вызывается из другого файла при нажатии пользователем регистрации, гдеstringVars () из полей ввода подается в метод класса. Кроме того, внешний вид отступа здесь не отформатирован должным образом, но я создал минимальный пример для логики и вырезал несколько строк кода.
class Database():
def __init__(self):
Database.phoneNumber = ""
def accountExistance(email, phoneNumber):
conn=sqlite3.connect("system.db")
cur=conn.cursor()
emailExist = cur.execute("SELECT count(email) FROM customerDetails WHERE email = ?", (email,)).fetchall()
conn.commit()
print(emailExist)
phoneExist = cur.execute("SELECT count(phone) FROM customerDetails WHERE phone = ?", (phoneNumber,)).fetchall()
print(phoneExist)
conn.commit()
if emailExist or phoneExist != 0 :
tk.messagebox.showinfo("Error", "This email and/or phone number is associated with an account")
return False
sys.exit()
#else:
#return True
#INSERT SIGN UP DETAILS
def customerDetails(forename, surname, dob, address, city,
county, postcode, phone, email, password,verified, gender):
print(forename, surname, dob, address, city, county, postcode,
postcode, phone, email, password, verified, gender)
test = Database.accountExistance(email, phone)
if test == False:
sys.exit()
age = 0
conn=sqlite3.connect("system.db")
cur=conn.cursor()
cur.execute("INSERT INTO customerDetails VALUES
(NULL,?,?,?,?,?,?,?,?,?,?,?,?,?)",(forename, surname, dob, address, city,
county, postcode, phone, email, password, verified, age, gender))
conn.commit()
conn.close()