Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Implementation of the search in the remote database #376

@Ckbit

Description

@Ckbit

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

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