1
resposta

Script de Python para inserir todos os vendedores

Baseado no post que vi de um colega, editei um script para subir todos os vendedores via excel. É necessário criar uma planilha em excel com as informações dos vendedores e colunas conforme a base.

import cx_Oracle
import pandas as pd

class Extrator:
    def __init__(self, linha):
        self.linha = linha
        self.descritor = linha[1]

    def split_descritor(self):
        return self.descritor.split('-')

    def split_linha(self):
        return [item for item in self.linha]

    def get_id(self):
        return self.split_linha()[0]

    def get_descritor(self):
        return self.descritor

    def get_embalagem(self):
        return self.split_linha()[2]

    def get_tamanho(self):
        return self.split_descritor()[1].strip()

    def get_sabor(self):
        return self.split_descritor()[2].strip()

    def get_preco(self):
        return self.split_linha()[3]

    def __str__(self):
        return f'ID: {self.get_id()} - Descritor: {self.get_descritor()} - Embalagem: {self.get_embalagem()} - ' \
               f'Tamanho: {self.get_tamanho()} - Sabor: {self.get_sabor()} - Preco: {self.get_preco()}'

# Lendo excel

dfv = pd.read_excel(r"CAMINHO_ATÉ_ARQUIVO\vendedores.xlsx", engine='openpyxl') # necessita ter o pacote openpyx
dfv.drop(df.iloc[:,4:], inplace=True, axis=1)
# Iniciando conexão

# servidor, porta e serviço -> so utilizar o que é disponibilizado nos detalhes da 
#conexao via sql developer
dsn_tns = cx_Oracle.makedsn('localhost', '1521', service_name='xe') 

connection = cx_Oracle.connect(
    user="system", # Usuario
    password="SUA SENHA", # Senha
    dsn=dsn_tns) # Detalhes da conexão

print("Conexão com o database realizada!")

cursor = connection.cursor()


# Elimina tabela

cursor.execute("""
    begin
        execute immediate 'drop table TABELA_DE_VENDEDORES';
        exception when others then if sqlcode <> -942 then raise; end if;
    end;""")

# Criando tabela

cursor.execute("""
    create table TABELA_DE_VENDEDORES (
        MATRICULA VARCHAR2(5),
        NOME VARCHAR2(100),
        PERCENTUAL_COMISSAO FLOAT
        )""")

# Definindo chave primaria

cursor.execute("""
    alter table TABELA_DE_VENDEDORES add constraint PK_TABELA_DE_VENDEDORES primary key (MATRICULA)""")

for row in dfv.itertuples(index=False):
    extrator = Extrator(row)
    tup = (extrator.get_id(), extrator.get_descritor(), extrator.get_embalagem())
    cursor.execute("insert into TABELA_DE_VENDEDORES (MATRICULA, NOME, PERCENTUAL_COMISSAO) values(:1, :2, :3)", tup)
print("Vendedores adicionados ao banco de dados.")

connection.commit()
cursor.close()
connection.close()
1 resposta

Oi, Lucas! Tudo certo por aí?

Desde já, peço desculpas pela demora em te responder.

Nossa!! Ficou muito legal o seu código em Python, testei e ele funcionou certinho! Parabéns pelo capricho, esforço e dedicação em construir um programa para inserir os vendedores na tabela!

Mesclar os nossos conhecimentos, como você fez ao desenvolver este código, é muito divertido e nos ajuda a explorar cada vez mais as nossas habilidades. Continue sempre assim que você vai longe, Lucas :)

Conte comigo caso surja alguma dúvida!

Abraços.