1
I created a simple Python application for an agenda system with Sqlite3. There are 3 files in the main menu agenda.py
the of contato.py
and usuario.py
who log in to the system.
In the file 'agenda.py' I log in the user calling the login function (connection, login, password) that is in the file 'user.py' that returns me the function menuContacts() that is in the file 'contacts.py', inside that menu option 6 is to exit returning to the login menu of the file 'agenda.py' that’s where I can’t return to that home screen
Below is the code I’m using.
Agenda py.
from usuario import *
from contatos import *
import getpass
print("\n\033[47m\033[31mConectando no banco...\033[0;0m\n")
conexao = sqlite3.connect("banco.sqlite")
print("\n--- Efetuar Login no Sistema ---\n")
usuario = input("Por favor, informe o usuário: ")
senha = getpass.getpass("Por favor, informe a senha: ")
login(conexao, usuario, senha)
print("\n\033[47m\033[31mFechando conexão com o banco...\033[0;0m\n")
conexao.close()
py.
from usuario import *
# --- Função para criar a tabela ----
def criar_tabela_contato(conexao):
cursor = conexao.cursor()
sql = """
CREATE TABLE IF NOT EXISTS contato (
nome text,
fone text,
email text,
usuario integer
);
"""
cursor.execute(sql)
conexao.commit()
# --------------------------------------------
# --- Função para inserir o contato ---
def inserir_contato(conexao, nome, telefone, email, id):
cursor = conexao.cursor()
sql = """
INSERT INTO contato VALUES(
'{}',
'{}',
'{}',
{}
);
""".format(nome, telefone, email, id)
cursor.execute(sql)
conexao.commit()
# --------------------------------------------
# --- Função para listar contatos ---
def listar_contato(conexao):
cursor = conexao.cursor()
sql = "SELECT rowid, * FROM contato ORDER BY nome;"
cursor.execute(sql)
contato = cursor.fetchall()
print("\033[32mId Nome Telefone E-mail\033[0;0m\n")
print("\033[32m== ======= =========== ================\033[0;0m\n")
for cont in contato:
print("{}: {} - ({}) -".format(cont[0], cont[1], cont[2]), cont[3] )
# -----------------------------------------------------------
# --- Função para excluir contatos ---
def excluir_contato(conexao, id):
cursor = conexao.cursor()
sql = """
DELETE FROM contato
WHERE rowid = {};
""".format(id)
cursor.execute(sql)
conexao.commit()
# ---------------------------------------------------------------
# --- Função para buscar contatos ---
def buscar_contato(conexao, nome):
cursor = conexao.cursor()
sql = "SELECT rowid, * FROM contato WHERE nome LIKE '%{}%';".format(nome)
cursor.execute(sql)
contato = cursor.fetchall()
print("\033[32mId Nome Telefone E-mail\033[0;0m\n")
print("\033[32m== ======= ======== ================\033[0;0m\n")
for cont in contato:
print( "{}: {} - ({}) -".format(cont[0], cont[1], cont[2]), cont[3] )
# ----------------------------------------------------------------
# --- Função para alterar contatos ---
def alterar_contato(conexao, nome, telefone, email, id):
cursor = conexao.cursor()
sql = "UPDATE contato SET nome = '{}', fone = '{}', email = '{}' WHERE rowid = {}".format(nome, telefone, email, id)
cursor.execute(sql)
conexao.commit()
# -----------------------------------------------------------------------------------------------------------------------
# ========== Menu Principal ==========
def menuContatos():
print("\n\033[47m\033[31mConectando no banco...\033[0;0m\n")
conexao = sqlite3.connect("banco.sqlite")
opcao = 0
while opcao != 6:
print("""\033[32m
Em relação aos contatos do sistema, você deseja...
1 - Inserir
2 - Buscar
3 - Listar
4 - Alterar
5 - Excluir
6 - Retornar
\033[0;0m""")
opcao = int(input("\033[32mInforme a opção desejada: \033[0;0m"))
if opcao == 1:
print("\n\033[47m\033[30m--- Digite os dados do contato ---\033[0;0m\n")
while True:
n = input("Nome: ")
if n == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um nome...\033[0;0m")
else:
break
while True:
t = input("Telefone: ")
if t == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um telefone...\033[0;0m")
else:
break
while True:
e = input("E-mail: ")
if e == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um endereço de e-mail...\033[0;0m")
else:
break
while True:
i = int(input("Id: "))
if i == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um Id...\033[0;0m")
else:
break
print("\n\033[47m\033[30m--- Contato inserido com sucesso ---\033[0;0m\n")
inserir_contato(conexao, n, t, e, i)
elif opcao == 2:
print("\n\033[47m\033[30m--- Buscar Registro ---\033[0;0m\n")
nome = input("Digite o nome do contato: ")
print("\n\033[47m\033[30m--- Registros Encontrados ---\033[0;0m\n")
buscar_contato(conexao, nome)
elif opcao == 3:
print("\n\033[47m\033[30m--- Lista de contatos cadastrados ---\033[0;0m\n")
listar_contato(conexao)
elif opcao == 4:
print("\n\033[47m\033[30m--- Alteraçao de Contatos ---\033[0;0m\n")
n = input("Nome: ")
t = input("Telefone: ")
e = input("Email: ")
i = int(input("Id: "))
alterar_contato(conexao, n, t, e, i)
print("\n\033[47m\033[30m--- Alteração realizada com sucesso ---\033[0;0m\n")
elif opcao == 5:
print("\n\033[47m\033[30m--- Exclusão de Registro ---\033[0;0m\n")
id = input("Digite o ID para do contato para excluir: ")
excluir_contato(conexao, id)
print("\n\033[47m\033[30m--- Contato excluido com sucesso ---\033[0;0m")
elif opcao == 6:
print("\n\033[47m\033[30m--- Retornando para o Menu Agenda ----\033[0;0m\n")
return login(conexao, usuario, senha)
print("\n\033[47m\033[31mFechando conexão com o banco...\033[0;0m\n")
conexao.close()
users.py
import sqlite3
from contatos import *
# --- Funções do Programa ---
# --- Função 1: Criação da Tabela ---
def criar_tabela_usuario(conexao):
cursor = conexao.cursor()
sql = """
CREATE TABLE IF NOT EXISTS usuario(
nome text,
login text,
senha text
);
"""
cursor.execute(sql)
# ---------------------------------------------------
# --- Função 2: Inserir Usuário ---
def inserir_usuario(conexao, nome, login, senha):
cursor = conexao.cursor()
sql = """
INSERT INTO usuario VALUES(
'{}',
'{}',
'{}'
);
""".format(nome, login, senha)
cursor.execute(sql)
conexao.commit()
# ---------------------------------------------------
# --- Função 3: Listar Usuários ---
def listar_usuarios(conexao):
cursor = conexao.cursor()
sql = "SELECT rowid, * FROM usuario ORDER BY nome;"
cursor.execute(sql)
usuarios = cursor.fetchall()
print("\033[34mId Nome Login\n\033[0;0m")
print("\033[34m== ======= =========\n\033[0;0m")
for usr in usuarios:
print( "{}: {} - ({})".format(usr[0], usr[1], usr[2]) )
# ---------------------------------------------------------------
# --- Função 4: Excluir Usuários ---
def excluir_usuario(conexao, id):
cursor = conexao.cursor()
sql = """
DELETE FROM usuario
WHERE rowid = {};
""".format(id)
cursor.execute(sql)
conexao.commit()
# ---------------------------------------------------------------
# --- Função 5: Buscar Usuários ---
def buscar_usuario(conexao, nome ):
cursor = conexao.cursor()
sql = "SELECT rowid, * FROM usuario WHERE nome LIKE '%{}%';".format(nome)
cursor.execute(sql)
usuario = cursor.fetchall()
print("\033[34mId Nome Login\n\033[0;0m")
print("\033[34m== ======= ========\n\033[0;0m")
for usr in usuario:
print( "{}: {} - ({})".format(usr[0], usr[1], usr[2]))
# -----------------------------------------------------------------
# --- Função 6: Alterar Contatos --
def alterar_usuario(conexao, nome, login, senha, id):
cursor = conexao.cursor()
sql = "UPDATE usuario SET nome = '{}', login = '{}', senha = '{}' WHERE rowid = {}".format(nome, login, senha, id)
cursor.execute(sql)
conexao.commit()
# ----------------------------------------------------------------------------------------------------------------
# --- Função 7: Login Menu Principal ---
def login(conexao, login, senha):
cursor = conexao.cursor()
sql = "SELECT rowid, * FROM usuario WHERE login LIKE '{}' AND senha LIKE '{}';".format(login, senha)
cursor.execute(sql)
usuario = cursor.fetchall()
if usuario:
for usr in usuario:
print( "\n--- Bem Vindo! ---\n\n--- {} ---\n".format(usr[1]))
return menuContatos()
else:
print("\n--- Usuário inválido! ---\n")
print("...Retornado para o Menu Agenda...\n")
# -----------------------------------------------------------------------------------------------------------------
# --- Menu Principal do Programa ---
def menuUsuario():
print("\n\033[47m\033[31mConectando no banco...\033[0;0m\n")
conexao = sqlite3.connect("banco.sqlite")
opcao = 0
while opcao != 6:
print("""\033[34m
Em relação aos usuários do sistema, você deseja...
1 - Inserir
2 - Buscar
3 - Listar
4 - Alterar
5 - Excluir
6 - Voltar
\033[0;0m""")
opcao = int(input("\033[34mOpção desejada: \033[0;0m"))
if opcao == 1:
print("\n\033[47m\033[30m\--- Digite os dados do usuário ---\033[0;0m\n")
while True:
n = input("Nome: ")
if n == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um nome...\033[0;0m\n")
else:
break
while True:
l = input("Login: ")
if l == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um login...\033[0;0m\n")
else:
break
while True:
s = input("Senha: ")
if s == "":
print("\n\033[47m\033[30mEspaço vazio! Digite um senha...\033[0;0m\n")
else:
break
print("\n\033[47m\033[30m--- Contato inserido com sucesso ---\033[0;0m\n")
inserir_usuario(conexao, n, l, s)
elif opcao == 2:
print("\n\033[47m\033[30m--- Buscar registro ---\033[0;0m\n")
nome = input("Digite o nome do usuário para a busca: ")
print("\n\033[47m\033[30m--- Registros Encontrados ---\033[0;0m\n")
buscar_usuario(conexao, nome)
elif opcao == 3:
print("\n\033[47m\033[30m--- Lista de usuário cadastrados ---\033[0;0m\n")
listar_usuarios(conexao)
elif opcao == 4:
print("\n\033[47m\033[30m--- Alteração de Usuários ---\033[0;0m\n")
n = input("Nome: ")
l = input("Login: ")
s = input("Senha: ")
i = input("Id: ")
alterar_usuario(conexao, n, l, s, i)
print("\n\033[47m\033[30m--- Alteração realizada com sucesso ---\033[0;0m\n")
elif opcao == 5:
print("\n\033[47m\033[30m--- Exclusão de registro ---\033[0;0m\n")
id = input("Digite o ID para do contato para excluir: ")
excluir_usuario(conexao, id)
print("\n\033[47m\033[30m--- Usuário excluido com sucesso ---\033[0;0m\n")
elif opcao == 6:
print("\n\033[47m\033[30m--- Voltando ----\033[0;0m\n")
break
# Fechando a conexão (ligação) com o banco
print("\n\033[47m\033[31mFechando conexão com o banco...\033[0;0m\n")
conexao.close()
still missing put error, you spoke in question "I can’t return to this home screen" but doesn’t say what the problem is, what error is presenting or what is failing.
– nosklo
This is the error that appears: Traceback (Most recent call last): File "C: Users sum_4 Downloads Maycon - Atom Algoritimos agenda agenda.py", line 16, in <module> login(connection, user, password) File "C: Users sum_4 Downloads Maycon - Atom Algoritimos agenda usuario.py", line 116, in login Return menuContatos() File "C: Users sum_4 Downloads Maycon - Atom Algoritimos agenda contactos.py", line 187, in menuContatos Return login(connexion, user, password) Nameerror: name 'login' is not defined
– Maycon Willian Alves da Silva
I should ask the question... and not comment. I edited my answer
– nosklo
Okay, thank you! Now it’s working properly.
– Maycon Willian Alves da Silva