ExemplosExemplo

Exemplo: consulte o seu banco

O seu código nunca abre um socket de banco: scripts rodam sem rede. Em vez disso, a consulta fica num script SQL que roda numa das conexões do projeto, e qualquer outro script chama esse script pelo caminho e recebe as linhas de volta. A senha fica na conexão; o código só vê dados.

6 min de leituraAntes: IntegraçõesAbrir no Waiso
O que você vai aprender
  • Escrever um script SQL com um parâmetro ligado
  • Chamar de Python ou TypeScript e usar as linhas

A consulta, depois o código

Um script SQL declara as entradas em linhas -- @param e usa como :nome. Cada valor vai para o banco como um parâmetro ligado de verdade, nunca colado no texto, então um valor não consegue mudar a consulta. O resultado são as linhas como objetos com o nome de cada coluna, com números e datas já convertidos.

docs-demoIntegraçõesshop_dbHistórico
shop_dbpostgres / docs_demo
Tabelas2
customers5
orders12
Views0
Funções0
Procedures0
customers
Adicionar linha
1SELECT *2FROM customers3LIMIT 100;
5 linhas · 4 msExecutar Ctrl ↵
Teste a consulta no workbench SQL primeiro, depois salve como script.

O código

Primeiro a consulta, salva como db/orders_by_status com a sua conexão escolhida no editor:

orders_by_status.pg.sql
PostgreSQL
-- @param status string = late
SELECT c.name, c.email, o.total, o.created_at
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE o.status = :status
ORDER BY o.created_at

Depois um script que chama a consulta e soma os totais:

late_total.py
from waiso import run_script

def main(status: str = "late"):
    res = run_script("db/orders_by_status", {"status": status})
    rows = res.output["rows"]
    total = round(sum(r["total"] for r in rows), 2)
    return {"status": status, "orders": len(rows), "total": total}
  1. Crie o script SQL, escolha a conexão e clique em Executar para ver as linhas.
  2. Crie o script que chama e rode.

Limites e próximos passos

Para o caso comum não é preciso código nenhum: um passo SQL num flow roda a mesma consulta e entrega as linhas para um loop ou um e-mail.