Я делаю простую систему для школы для домашнего задания, где пользователи входят в систему и используют пароль, чтобы использовать слишком много функций. Я создал кнопку, которая открывает окно для регистрации новых пользователей, я могу зарегистрироваться без проблем, уже проверил в базе данных, есть новые пользователи. Однако необходимо провести лечение, чтобы человек не создавал учетную запись с тем же логином
Я следую инструкции документации SQLITE (http://www.sqlitetutorial.net/sqlite-python/sqlite-python-select/)
что:
1. Сначала установите соединение с базой данных SQLite, создав объект Connection.
2. Далее создайте объект Cursor, используя метод курсора объекта Connection.
3. Затем выполните инструкцию SELECT.
4. После этого вызовите метод fetchall () объекта курсора для извлечения данных.
5. Наконец, зациклите курсор и обработайте каждую строку отдельно.
Вот мои файлы, Tela.py и BancoLogin.py:
(Tela.py)
from tkinter import *
from tkinter import messagebox as ms
import sqlite3
from BancoLogin import BancoLogin
(...)other defs(...)
def new_user(self):
#Establish Connection
bancoLogin = BancoLogin()
c = bancoLogin.conexao.cursor()
#Find Existing username if any take proper action
find_user = ('SELECT * FROM user WHERE username = ?')
c.execute(find_user,[(self.username.get())])
rows = c.fetchall()
print(rows)
if c.fetchall():
ms.showerror('Error!', 'Username taken - try a different one.')
else:
ms.showinfo('Success!', 'Account Created!')
self.log()
#Create New Account
insert = 'INSERT INTO user(username,password) VALUES(?,?)'
c.execute(insert,[(self.n_username.get()),(self.n_password.get())])
bancoLogin.conexao.commit()
И моя база данных находится в другом файле (BancoLogin.py):
import sqlite3
class BancoLogin():
def __init__(self):
self.conexao = sqlite3.connect('bancoLogin.db')
self.createTable()
def createTable(self):
c = self.conexao.cursor()
c.execute('CREATE TABLE IF NOT EXISTS user(username TEXT NOT NULL, password TEX NOT NULL);')
self.conexao.commit()
c.close()
Я признаю, что что-то не так, потому что, когда я делаю:
rows = c.fetchall()
print(rows)
В оболочке я получаю:
[]