Skip to content

Implementation of the search in the remote database #376

Open
@Ckbit

Description

I am unable to implement the search for the remote database in my code.
How do I connect to the database, make requests and update information?

This code has some comments and words in Brazilian Portuguese

`
import PySimpleGUI as sg
import sqlite3

Conectando no Banco de Dados

conn = sqlite3.connect('vales.db')
cursor = conn.cursor()

conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute('SELECT NOME FROM VALES')
items = cursor.fetchall()
conn.close()

Busca o codigo digitado no banco de dados

def buscar_codigo_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM VALES WHERE CHAVE = ?", (codigo_digitado,))
row = cursor.fetchone()
conn.close()
return row is not None

def atualizar_status_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("UPDATE VALES SET status = 'inativo' WHERE chave = ?", (codigo_digitado,))
conn.commit()
conn.close()

Retorna o nome do vale referente ao codigo digitado

def buscar_nome_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("SELECT nome FROM VALES WHERE chave = ?", (codigo_digitado,))
row = cursor.fetchone()
conn.close()
if row:
return row[0] # Retorna o nome
else:
return None # Retorna none se não encontrar nada

Retorna o status do vale referente ao codigo digitado

def buscar_status_sql(codigo_digitado):
conn = sqlite3.connect('vales.db')
cursor = conn.cursor()
cursor.execute("SELECT status FROM VALES WHERE chave = ?", (codigo_digitado,))
row = cursor.fetchone()
conn.close()
if row:
return row[0] # Retorna o valor do status
else:
return None # Retorna none se não encontrar nada

Janela do menu principal

def janela_menu():
janela_menu_texto = [
[sg.Text(f'Mozinho lindo', font=('Helvetica', 16, 'bold'))],
]
janela_menu = [
[sg.Canvas(size=(104, 104), key='canvas', background_color='red'), sg.Column(janela_menu_texto)],
[sg.Text()],
[sg.Button('Resgatar vales', key='botao_resgatar_vales', size=(15, 2)), sg.Button('Visualizar vales resgatados', size=(15, 2), key='botao_visualizar_resgatados'), sg.Button('Fechar', size=(15, 2), key='botao_fechar')],
]
menu = sg.Window('menu', layout=janela_menu, size=(427, 210))
return menu

Janela do listbox de resgatados

def janela_resgatados():
layout = [
[sg.Listbox(values=[item[0] for item in items], size=(40, 14), key='listbox', font=('Helvetica', 16))],
[sg.Push(), sg.Button('Voltar', key='botao_voltar_resgatados')]
]
window = sg.Window('items', layout, size=(400, 400))
return window

Janela para resgatar os codigos

def janela_resgatar():
layout = [
[sg.Text("Vales")],
[sg.InputText(key="input")],
[sg.Button("Resgatar"), sg.Button("Sair"), sg.Button("Limpar"), sg.Button("Voltar")]
]
# Criação da janela
window = sg.Window("Vales", layout)
return window

Loop do código principal

while True:
janela = janela_menu()
event, value = janela.read()

if event == sg.WINDOW_CLOSED or event == "botao_fechar":
    break

elif event == "botao_resgatar_vales":
    janela.close()
    janela = janela_resgatar()

    while True:
        event, value = janela.read()

        if event == sg.WINDOW_CLOSED or event == "Sair":
            janela.close()
            janela = janela_menu()
            break

        elif event == "Resgatar":
            codigo_digitado = value["input"]

            if buscar_codigo_sql(codigo_digitado):
                status_vale = buscar_status_sql(codigo_digitado)
                if status_vale == "ativo":
                    nomeVale = buscar_nome_sql(codigo_digitado)
                    if nomeVale:
                        sg.popup(f"Nome: {nomeVale}")
                        atualizar_status_sql(codigo_digitado)  # Chamada da função para atualizar o status
                        janela.close()

                    else:
                        sg.popup("Erro ao buscar nome!")
                        janela["input"].update('')
                else:
                    sg.popup("Vale inativo!")

            else:
                sg.popup("Código incorreto!")

        elif event == "Limpar":
            janela["input"].update('')

        elif event == "Voltar":
            janela.close()
            break

elif event == "botao_visualizar_resgatados":
    janela.close()
    janela = janela_resgatados()
    event, value = janela.read()

    if event == sg.WINDOW_CLOSED:
        break

    elif event == "botao_voltar_resgatados":
        janela.close()

Fechamento da janela

janela.close()

Comando para compilar o arquivo .py para .exe:

pyinstaller --onefile -w vales.py

pyinstaller -> nome da ferramenta

--onefile -> agrupa tudo em um unico .exe

-w -> caso tenha alguma interface gráfica

vales.py -> nome do arquivo .py que será compilado

`

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions