De SQL ao Python: unindo poder armazenado com flexibilidade funcional

Visão geral Os bancos de dados e linguagens de programação são frequentemente usados ​​em sistemas de software modernos para fornecer soluções eficazes, escaláveis ​​e sustentáveis. As funções Python e os procedimentos armazenados SQL são componentes essenciais desses ecossistemas. As funções Python encapsulam a lógica de aplicativo reutilizável para computação, integração e processamento sofisticado, enquanto os procedimentos armazenados encapsulam a lógica do banco de dados para realizar ações diretamente dentro do mecanismo de banco de dados. Procedimento armazenado (SQL) Um procedimento armazenado é um conjunto pré-compilado de instruções SQL (e lógica de controle de fluxo opcional) armazenada em um banco de dados relacional. Ele pode aceitar parâmetros de entrada, executar operações (como consultas, inserções, atualizações, exclusão ou lógica de negócios complexa) e resultados de retorno. Principais recursos encapsulamento da lógica do banco de dados. Execução parametrizada para consultas dinâmicas. Lógica de controle do fluxo (se, enquanto, caso). Segurança aprimorada por meio de permissões no nível do procedimento. Aplicativos que gera relatórios financeiros ou operacionais executando atualizações de lote e ETL que impeçam as regras de negócios dentro do script SQL do banco de dados: Aplicação de procedimentos armazenados O exemplo ilustra a aplicação de um procedimento armazenado em um cenário de negócios, usando o banco de dados de vendas. O script recupera os pedidos do cliente acima de um determinado valor e registro quando o procedimento é executado. – Tabela de clientes Criar clientes da tabela (CustomerID int Primary Key, Nome CustomerName Varchar (100), City Varchar (50)); – Tabela de pedidos Crie pedidos de tabela (OrderId int Primary Key, CustomerID Int, Data do pedido, encomendar decimal (10,2), Chave estrangeira (CustomerID) Referências aos clientes (CustomerID)); – Tabela de procedimento Criar Tabela ProcedureLog (Chave primária do LOG_ID SERIAL, Nome do ProcedureName Varchar (100), Timestamp de ExecutionTime); – Insira a inserção de dados de amostra em clientes (CustomerId, CustomerName, City) Valores (1, ‘Alice Johnson’, ‘Nova York’), (2, ‘Michael Smith’, ‘Chicago’), (3, ‘Sarah Lee’, ‘San Francisco’); INSERT INTO Orders (OrderID, CustomerID, OrderDate, OrderAmount) VALUES (101, 1, ‘2025-01-10’, 250.00), (102, 2, ‘2025-01-15’, 120.00), (103, 1, ‘2025-02-01’, 500.00), (104, 3, ‘2025-02-05’, 90.00); – Procedimento armazenado Criar ou substituir a função GethighValueornos (min_amount decimal) Tabela de retornos (OrderId int, nome do personalização varchar (100), data da data do pedido, ordem decimal (10,2)) como $$ iniciar- registrar a inserção de execução no procedimento (namename, execution) (‘gethighvaluer insert no procedimento (names, execution) (‘ gethighvalue, – Return consulta Return Consulta Selecione O.OrderId, C. Customername, O.OrderDate, O.OrderAmount From Ordens O Interno Junção dos Clientes C em O.CustomerId = C.Customerid WHERE O.OrderAmount> = Min_amount Order por O.ordeamount desc; FIM; $$ idioma PLPGSQL; – executando a função Selecionar * de GethighValueorders (200); – Verifique os logs Selecione * no ProcedureLog; Digite o modo de saída de tela cheia de tela cheia o código SQL: cria as tabelas. Insira clientes e pedidos. Crie um procedimento armazenado que: registra todas as execuções no ProcedureLog. Retorna os pedidos onde Orderamount> = @Minamount. Função (Python) Uma função Python é um bloco de código reutilizável que executa uma tarefa específica, recebe argumentos de entrada (opcional) e pode retornar valores. Funções na modularidade, abstração e reutilização de suporte ao Python em aplicações. Os principais recursos podem retornar qualquer objeto python (por exemplo, int, listar, ditado) suportar recursão, loops e manuseio de erros com tentativa … exceto integrar -se perfeitamente a APIs e bibliotecas externas que permitem a abstração e a modularidade em aplicativos de software Aplicando Aplicativos Aplicando Setores Pytiating Pytiating Scripts Aplicando Regras de Aplicação de Máquinas de Aplicação e ANELYTICS A APLICAÇÕES DA APLICAÇÕES EXTERNATIVAIS APIRATIONAISTAÇÕES E SERVIÇÕES DO SERVIMENTOS Pystro por: conectando -se a um banco de dados. Chamando um procedimento armazenado. Aplicando uma função para filtrar, transformar e exibir os dados. Do DateTime Import DateTime # “Tables” em clientes de memória = [
{“CustomerID”: 1, “CustomerName”: “Alice Johnson”, “City”: “New York”},
{“CustomerID”: 2, “CustomerName”: “Michael Smith”, “City”: “Chicago”},
{“CustomerID”: 3, “CustomerName”: “Sarah Lee”, “City”: “San Francisco”}
]

pedidos = [
{“OrderID”: 101, “CustomerID”: 1, “OrderDate”: “2025-01-10”, “OrderAmount”: 250.00},
{“OrderID”: 102, “CustomerID”: 2, “OrderDate”: “2025-01-15”, “OrderAmount”: 120.00},
{“OrderID”: 103, “CustomerID”: 1, “OrderDate”: “2025-02-01”, “OrderAmount”: 500.00},
{“OrderID”: 104, “CustomerID”: 3, “OrderDate”: “2025-02-05”, “OrderAmount”: 90.00}
]

procedimento_log = [] # “ProcedureLog tabela” # função para registrar execução def log_procedure (name): procedure_log.append ({“procedureName”: name, “executionTime”: dateTime.now ()}) # Função para obter o alto valor. Filtre e junte -se ao resultado dos clientes = []
Para ordem em ordens: se a ordem[“OrderAmount”] > = min_amount: cliente = próximo (c para c em clientes se c[“CustomerID”] == Ordem[“CustomerID”]) Result.Append ({“OrderId”: Ordem[“OrderID”]”CustomerName”: Cliente[“CustomerName”]”OrderDate”: Order[“OrderDate”]”Orderamount”: Ordem[“OrderAmount”]
}) # Classifique a ordem por descult.sort (key = lambda x: x[“OrderAmount”]reverse = true) RESULTADO RETORNO # ————————- # Aplicativo Print (“Ordens de alto valor> = 200:”) para linha em get_high_value_orders (200): print (linha) imprimir (“\ nProcedure Modedure Logs:”) para o login). lógica em unidades reutilizáveis. Por exemplo, em vez de escrever a mesma consulta SQL ou código Python várias vezes, você o coloca em um procedimento/função e o chama quando necessário. 2. A parametrização aceita parâmetros de entrada, processando -os e retorna os resultados. Por exemplo: SQL: EXEC getCustomerorders @customerId = 5 python: get_customer_orders (Customer_id = 5) Digite Modo de tela cheia Modo de tela cheia 3. Modularidade e reutilização ambos permitem o design modular do programa, facilitando a manutenção dos sistemas. Alterações de código em um procedimento/função Aplicar em todos os lugares que ele é chamado. 4. Suporte de fluxo de controle Ambos podem incluir lógica condicional (se, caso em SQL vs. se/else em python) e construções em loop. Differences Aspect Stored Procedures (SQL) Functions (Python) Execution Context Runs inside database engine Runs in Python interpreter/application layer Primary Purpose Optimizing database operations (queries, transactions) Implementing general-purpose logic and algorithms Return Types Result sets, output parameters, status codes Any Python object (int, list, dict, etc.) Language Used SQL with procedural extensions (T-SQL, PL/SQL, etc.) Desempenho de sintaxe do Python Pré-compilado, reduz o tráfego da rede, processando em dB, requer busca de dados de DB antes de processar o tratamento de erros, tente os blocos de captura … Exceto Blocksfulfulssamento) Aplicações externas Sobes de dados (Vistas, vistas, transações) Independentes, obras de Memonse) ou mais relacionados à Memory ou por dados externos (Tables, Views, Transactions) (transações), obras de Memofl) ou mais relacionadas ao banco de dados (transações), que são usados ​​com os que estão sendo utilizados com os que estão sendo feitos por dados externos e que são necessários para o uso de dados externos (vistas, as transações) (exceto os bloqueios). (agregação, filtragem, atualizações em lote). Precisando de sobrecarga de rede reduzida (a lógica é executada próxima aos dados). A segurança é crítica-as permissões podem ser concedidas no nível do procedimento e não no nível da tabela. Você precisa de otimização de desempenho: planos de execução pré-compilados e indexação. Aplicativos gerando relatórios financeiros diretamente do banco de dados. Executando atualizações de lote agendadas ou processos ETL. Exibir regras de negócios dentro do banco de dados. As funções Python são melhor usadas quando: é necessário o processamento no nível do aplicativo (regras de negócios, algoritmos, transformações de dados). Os dados precisam ser manipulados na memória além dos recursos do SQL (por exemplo, aprendizado de máquina, processamento de linguagem natural). Você precisa de integração com APIs, serviços ou interfaces de usuário externos. A lógica requer flexibilidade além das operações relacionais (algoritmos de gráfico, cálculos recursivos, etc.). Limpeza de aplicativos e preparação de conjuntos de dados para aprendizado de máquina. Implementando a lógica do aplicativo em um serviço da web. Chamar um procedimento armazenado de banco de dados e processamento adicional resulta em Python. A aplicação de ambos em sistemas do mundo real, procedimentos armazenados e funções Python geralmente complementam um do outro, lida com a recuperação/agregação de dados, enquanto a função Python chama o procedimento armazenado e aplica lógica de negócios adicional. Resumo Os procedimentos armazenados: otimizar e proteger operações de banco de dados, reduzir a carga de rede, aplicar regras de negócios no banco de dados. Funções Python: Forneça recursos de flexibilidade, abstração e lógica de aplicativos mais amplos fora do banco de dados. Ambos: formam uma combinação poderosa – os bancos de dados lidam com o que fazem de melhor (armazenamento de dados e recuperação), enquanto o Python gerencia a lógica do aplicativo e o processamento avançado. Referências e leitura adicional Coronel, C., & Morris, S. (2015). Sistemas de banco de dados: design, implementação e gerenciamento. Cengage Learning. Ramakrishnan, R., & Gehrke, J. (2003). Sistemas de gerenciamento de banco de dados. McGraw-Hill. Fowler, M. (2018). Refatoração: melhorando o design do código existente. Addison-Wesley. Van Rossum, G. & Drake, FL (2009). O manual de referência da linguagem Python. Rede Teoria Ltd. Microsoft Docs. (2023). Procedimentos armazenados (mecanismo de banco de dados). Documentação PostgreSQL. (2023). Funções e procedimentos armazenados. Python Software Foundation. (2023). Funções python. IBM Developer. (2021). Escolhendo entre procedimentos armazenados e lógica de aplicativo. Python real. (2023). Definindo sua própria função python. Discussões de pilha transbordam. (Em andamento). Melhores práticas para procedimentos armazenados versus lógica no nível do aplicativo.

Fonte

Você pode ter perdido