sqlitebrowser / dbhub.io

A "Cloud" for SQLite databases. Collaborative development for your data. 😊
https://dbhub.io
GNU Affero General Public License v3.0
370 stars 39 forks source link

Implementation of the search in the remote database #376

Open Ckbit opened 3 months ago

Ckbit commented 3 months ago

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

`