Здравствуйте, Не работает добавление в базу sqlite3, функция "Create_Account" требует в себя имя пользователя, username и пароль, но после выполнения (никаких ошибок нет) ничего не добавляется, это показывает отдельная функция для проверки конкретного username в таблице и также print(всех username из таблицы) после функции добавление в базу.
(Читал на многих форумах решение, но там люди забывают ставить commit(), у меня он прописан сразу после INSERT INTO, но этой строки как будто и не было, смотря по тому, что показывает база.)
(Я возможно, понимаю, что код выглядит не сильно профессионально, надеюсь разобраться не будет сложным)
Буду рад, даже если будут просто ссылки на документацию, которую нужно прочесть, спасибо)
import sqlite3
db = 0
cursor = 0
def AnalizInfo():
global db, cursor
db = sqlite3.connect('users.db', check_same_thread=False) #Создание базы данных или соединение
cursor = db.cursor() #Создание курсора для базы
#---Создать таблицу в базе
cursor.execute("""CREATE TABLE IF NOT EXISTS users(
name TEXT,
username TEXT,
password TEXT
)""")
#username, password - данные пользователей
#name - имя пользователя
db.commit()
#---/////
#/////
#---Заполнение первого пользователя, если пользователей не найдено
#Первое создание элемента при создании таблицы, только эти строки работают почему-то.
if cursor.execute(f"SELECT username FROM users").fetchone() == None: #Если пользователей не найдено
cursor.execute(f'INSERT INTO users VALUES (?, ?, ?)', ('Павел', 'Markus', 'Pvl0083777'))
db.commit()
#---////////
def Create_Account(name, username, password):
global db, cursor
if username in cursor.execute(f"SELECT username FROM users").fetchone(): #Если такой пользователь уже есть
return 'Такой пользователь уже существует !'
else:
try:
#Две строки ниже не работают, по какой-то причине(вопрос про них в целом):
cursor.execute(f'INSERT INTO users VALUES (?, ?, ?)', (name, username, password))
db.commit()
#После этого идёт показ всех username из таблицы users, куда и добавлялся элемент, но он показывает, что добавился только первый элемент при создании базы.
print(cursor.execute(f"SELECT username FROM users").fetchone()) #Вывести в консоль всю таблицу с username-ми
return True
except:
return False
def main(username, password, types, name=None):
AnalizInfo() #Первая функция для соединения или создание БД
if types == 'Check_Account': #Если нужно проверить аккаунт
return Check_Account(username, password)
elif types == 'Create_Account': #Если нужно создать аккаунт
return Create_Account(name, username, password)
print(main('Markus1', 'Pvl0083777', 'Create_Account'))