Turn python script into database executable

Asked

Viewed 276 times

0

I created a very simple python program to organize my work and tests, but I would like to make it portable to use on any computer. I know pyinstaller and cx_Freeze to turn the apps into executables, but I would like to know what the part of the database looks like, since it would be a lot to put a Mysql database with Wamp Server on a USB stick for example. What can I do? Below goes my code:

import pymysql as sql
import os
import pandas as pd

conexao = sql.connect(db = 'trabalhos', user = 'root', passwd = '')
cursor = conexao.cursor()

def Deleta_Trabalho():
    print("Digite -1 para cancelar ou digite o ID do trabalho abaixo: \n")
    opcao = int(input("Digite o ID: \n"))
    if opcao < 0:
        Consulta_Trabalhos()

    elif opcao == 0:
        Consulta_Trabalhos()

    else:
        Comando = ("Delete from trabalhos Where  ID = {0}")
        Comando_Final = Comando.format(opcao)
        cursor.execute(Comando_Final)
        conexao.commit()
        print("Trabalho Deletado! \n")
        Consulta_Trabalhos()

def Deleta_Avaliacao():
    print("Digite -1 para cancelar ou digite o ID da avaliacao abaixo: \n")
    opcao = int(input("Digite o ID: \n"))
    if opcao < 0:
        Consulta_Avaliacoes()

    elif opcao == 0:
        Consulta_Avaliacoes()

    else:
        Comando = ("Delete from avaliacoes Where  ID = {0}")
        Comando_Final = Comando.format(opcao)
        cursor.execute(Comando_Final)
        conexao.commit()
        print("Avaliacao Deletada! \n")
        Consulta_Avaliacoes()

def Consulta_Trabalhos():
    frame = pd.read_sql('Select * From trabalhos', conexao)
    pd.set_option('display.expand_frame_repr', False)
    print(frame)    

    escolha = int(input("1 - Voltar ao Menu Inicial     2 - Deletar Trabalho    3 - Sair \n"))

    if escolha == 1:
        os.system('cls' if os.name == 'nt' else 'clear')
        return 1

    elif escolha == 2:
        os.system('cls' if os.name == 'nt' else 'clear')
        Deleta_Trabalho()

    elif escolha == 3:
        os.system('cls' if os.name == 'nt' else 'clear')
        return 5
def Consulta_Avaliacoes():
    frame = pd.read_sql('Select * From avaliacoes', conexao)
    pd.set_option('display.expand_frame_repr', False)
    print(frame)

    escolha = int(input("1 - Voltar ao Menu Inicial     2 - Deletar Avaliacao    3 - Sair \n"))

    if escolha == 1:
        return 1

    elif escolha == 2:
        Deleta_Avaliacao()

    elif escolha == 3:
        return 5

def Novo_Trabalho():
    Materia = input("Qual a materia? \n")

    Dia = input("Dia: \n")

    Mes = input("Mes: \n")

    Data = Dia + "/" + Mes + "/" + "2020"

    Sobre = input("Fale sobre o trabalho: ")

    Comando = "Insert into trabalhos (Materia, Data_Entrega, Descricao) Values ('{0}', STR_TO_DATE( '{1}' , '%d/%m/%Y'), '{2}')"

    Comando_Final = Comando.format(Materia, Data, Sobre)

    cursor.execute(Comando_Final)

    conexao.commit()

    return True

def Nova_Avaliacao():
    Materia = input("Qual a materia? \n")

    Dia = input("Dia: \n")

    Mes = input("Mes: \n")

    Data = Dia + "/" + Mes + "/" + "2020"

    Conteudo = input("Conteudo: \n")

    Comando = "Insert into avaliacoes (Materia, `Data`, Conteudo) Values ('{0}', STR_TO_DATE( '{1}' , '%d/%m/%Y'), '{2}')"

    Comando_Final = Comando.format(Materia, Data, Conteudo)

    cursor.execute(Comando_Final)

    conexao.commit()

    return True

def main():
    print("1 - Ver trabalhos \n")

    print("2 - Ver avaliações \n")

    print("3 - Novo trabalho \n")

    print("4 - Nova avaliação \n")

    print("5 - Sair \n")

    escolha = int(input("Digite o que deseja fazer: \n"))

    if escolha == 1:
        os.system('cls' if os.name == 'nt' else 'clear')
        Consulta_Trabalhos()

    elif escolha == 2:
        os.system('cls' if os.name == 'nt' else 'clear')
        Consulta_Avaliacoes()

    elif escolha == 3:
        os.system('cls' if os.name == 'nt' else 'clear')
        sucesso = Novo_Trabalho()

        if sucesso == True:
            print("Trabalho agendado com sucesso! \n")
            print("Veja todos os trabalhos: \n")
            opcao = Consulta_Trabalhos()

            if opcao == 1:
                return 1

            elif opcao == 5:
                conexao.close()
                return 5


    elif escolha == 4:
        os.system('cls' if os.name == 'nt' else 'clear')
        sucesso = Nova_Avaliacao()


        if sucesso == True:
            print("Avaliacao agendada com sucesso! \n")
            print("Veja todos as avaliacoes: \n")
            Consulta_Avaliacoes()

    elif escolha == 5:
        return 5

x = main()

while x != 5:
    os.system('cls' if os.name == 'nt' else 'clear')
    x = main()

1 answer

1


You have two options. Work with some bank on a virtual machine and connect your app to it.

or

Migrate your database to a sqlite database. it is a local database(A file) where who makes the transaction controls and connection are the classes of python itself.

is a very simple bank to use, and if you know ORM, you can use sqlalchemy to facilitate your interaction with DB.

  • 1

    Opa Willian, thank you very much, this will help me a lot!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.