Skip to main content

ORM leve com introspecção automática para bancos JDBC como Informix, usando integração com wbjdbc.

Project description

PyPI PyPI - Downloads Build Status License: MIT Último Commit GitHub issues GitHub forks GitHub stars

WBORM

WBORM é uma biblioteca ORM leve para Python, projetada para funcionar diretamente com bancos de dados legados via JDBC, como Informix, DB2, Oracle e outros. Com foco em transparência, segurança e introspecção automática, ela é a parceira ideal da wbjdbc, entregando produtividade sem esconder o SQL.


✨ Destaques

  • Suporte completo a conexões JDBC via wbjdbc
  • Geração automática de modelos com introspecção
  • API fluente com .select(), .filter(), .join() e mais
  • Pivot e visualização tabular com bordas coloridas
  • Criação de tabelas temporárias com .create_temp_table()
  • Confirmação obrigatória em operações destrutivas
  • Bloqueio de UPDATE/DELETE sem WHERE
  • Transações automáticas com rollback
  • Cache de resultados com TTL e bypass com .live()
  • Integração com Pandas e Spark
  • Hooks como before_add() e after_update()
  • Criptografia e cache de modelos com model_cache
  • Stub .pyi automático para autocomplete

📁 Instalação

pip install wborm wbjdbc

🚀 Começando Rápido

1. Conectando via wbjdbc

from wbjdbc import connect_to_db

conn = connect_to_db(
    db_type="informix-sqli",
    host="localhost",
    port=1526,
    database="meubanco",
    user="usuario",
    password="senha",
    server="ol_informix"
)

2. Gerando modelos

from wborm.utils import generate_model, generate_all_models

# Modelo único:
generate_model("clientes", conn)

# Todos os modelos:
generate_all_models(conn)

Os modelos são injetados automaticamente no escopo global com o nome da tabela, ex: clientes.

3. Consultando dados

clientes.select("nome").filter("idade > 30").order_by("nome").limit(5).show()

🛠️ Definindo modelos manualmente (opcional)

from wborm.core import Model
from wborm.fields import Field

class Cliente(Model):
    __tablename__ = "clientes"
    id = Field(int, primary_key=True)
    nome = Field(str)
    idade = Field(int)

Cliente._connection = conn

Ideal para customizações, uso com .create_table() ou definir campos antes da criação no banco.


🔒 Segurança embutida

  • .add(), .update() e .delete() exigem confirm=True
  • Bloqueio automático de UPDATE ou DELETE sem cláusula WHERE
  • Transações protegidas com BEGIN WORK / COMMIT / ROLLBACK

📊 Integração com Pandas e Spark

import pandas as pd

clientes = clientes.all()
df = pd.DataFrame([c.to_dict() for c in clientes])
spark.createDataFrame([c.to_dict() for c in clientes.all()])

📦 Cache e performance

  • Consultas são cacheadas automaticamente (TTL = 60s por padrão)
  • Use .live() para forçar leitura ao vivo:
clientes.live().filter(ativo=True).all()

📌 Cores no terminal

Logs (via termcolor)

  • ✅ Verde: inserções (add, bulk_add)
  • 🟡 Amarelo: atualizações (update)
  • ❌ Vermelho: erros ou exclusões (delete)
  • 🔵 Azul / 🔷 Ciano: mensagens informativas e tabelas de cache

Tabelas renderizadas com show() ou pivot()

  • Modelos criados dinamicamente: bordas verdes
  • Modelos carregados via cache: bordas azuis

📖 Documentação completa

Acesse: https://wanderbatistaf.github.io/wborm

Inclui:

  • Guia de Início Rápido
  • QuerySet com todos os métodos
  • Pivot e tabelas temporárias
  • Introspecção de chaves estrangeiras
  • Cache de modelos e autocomplete

📜 Licença

Este projeto é licenciado sob a Licença MIT. Consulte o arquivo LICENSE para mais informações.


🤝 Contribuindo

Pull requests são bem-vindos! Envie sugestões ou melhorias diretamente no repositório do GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wborm-0.2.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wborm-0.2.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file wborm-0.2.0.tar.gz.

File metadata

  • Download URL: wborm-0.2.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for wborm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 506f16db5c2ae8890d6c942966a412f3dbb2d514d5c6de9fc32c986572fd5ed2
MD5 6f2c22092e9b102fc3ca568aecd2a5e5
BLAKE2b-256 d165f5f01d27ea93dea9bad09b58ae3a89fca3f0ac63a3249cdca19aca37532f

See more details on using hashes here.

Provenance

The following attestation bundles were made for wborm-0.2.0.tar.gz:

Publisher: publish-package.yml on wanderbatistaf/wborm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wborm-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: wborm-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for wborm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b5706be3d4e280bf0e44c4dcc65533363b056a12e79cede5622d42b7fdcdf86d
MD5 6fca45cc89411e4a64f5509f16908f2c
BLAKE2b-256 d6c947f15aa9cce1195f66f818a5cc274f0827c33f760249e2f53bc111ce66e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for wborm-0.2.0-py3-none-any.whl:

Publisher: publish-package.yml on wanderbatistaf/wborm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page