ORM leve com introspecção automática para bancos JDBC como Informix, usando integração com wbjdbc.
Project description
WBORM
WBORM é uma biblioteca ORM leve para Python, projetada para trabalhar com bancos de dados legados via JDBC (Informix, DB2, Oracle, entre outros).
Com foco em transparência, segurança e geração automática de modelos, é a parceira ideal da wbjdbc para entregar produtividade sem esconder o SQL.
✨ Destaques
- Conexão direta via JDBC usando
wbjdbc - Geração automática de modelos com introspecção
- API fluente:
.select(),.filter(),.join(),.group_by(),.order_by() - Novos JOINs avançados:
LEFT ANTI,RIGHT ANTI - Pivot dinâmico diretamente do queryset com
.pivot() - Criação de tabelas temporárias com
.create_temp_table() - Visualização de resultados com paginação e cores no terminal
- Filtros flexíveis: strings, expressões, listas, dicionários
- Operações CRUD com segurança:
confirm=Trueobrigatório - Cache de consultas automático, com bypass por
.live() - Integração direta com Pandas e Spark
- Criptografia e persistência de modelos em cache local (
.wbmodels/) - Autocomplete melhorado via stub
.pyigerado automaticamente - Suporte a expressões SQL dinâmicas:
col(),now(),date(),raw() - Totalmente retrocompatível com versões anteriores
📁 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
# Gerar um modelo
generate_model("clientes", conn)
# Gerar todos os modelos
generate_all_models(conn)
Modelos são automaticamente injetados no escopo global com o nome da tabela.
📊 Consultando dados de forma fluente
clientes \
.select("nome", "idade") \
.filter("idade > 18") \
.order_by("nome") \
.limit(10) \
.show()
📈 Criando pivôs e tabelas temporárias
# Pivot
clientes.pivot(index="cidade", columns="sexo", values=["idade"])
# Tabela temporária
top10 = clientes.filter("idade > 30").limit(10).create_temp_table("tmp_top10")
top10.show()
🔒 Segurança embutida
- Operações
.add(),.update(),.delete()exigemconfirm=True. - UPDATE ou DELETE sem WHERE são bloqueados automaticamente.
- Transações protegidas com
BEGIN WORK / COMMIT / ROLLBACKautomático.
📦 Cache inteligente
- Consultas armazenadas automaticamente por 60 segundos.
- Forçar leitura ao vivo com
.live():
clientes.live().filter(ativo=True).all()
🎨 Visualização com cores no terminal
- Tabelas dinâmicas coloridas:
- 🔵 Azul para resultados do cache.
- 🟢 Verde para consultas ao vivo.
- Paginação automática para grandes volumes de dados.
📚 Documentação Completa
Acesse: https://wanderbatistaf.github.io/wborm
Inclui:
- Guia de Início Rápido
- API completa do QuerySet
- Uso de Pivot e Tabelas Temporárias
- Geração automática de modelos
- Cache local e stub de 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!
Sugestões e melhorias podem ser enviadas 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wborm-0.3.1.tar.gz.
File metadata
- Download URL: wborm-0.3.1.tar.gz
- Upload date:
- Size: 29.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9047f83aa2029d558b44c473a9f487462d1b0ddba00d6cceeceac7bf1b518605
|
|
| MD5 |
02715661c46767b2e233b020a127dbdf
|
|
| BLAKE2b-256 |
f00fae14ac0cbb4960266329e09b80d850663d6d326900a58c5395cdc0fcc413
|
Provenance
The following attestation bundles were made for wborm-0.3.1.tar.gz:
Publisher:
publish-package.yml on wanderbatistaf/wborm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wborm-0.3.1.tar.gz -
Subject digest:
9047f83aa2029d558b44c473a9f487462d1b0ddba00d6cceeceac7bf1b518605 - Sigstore transparency entry: 219617149
- Sigstore integration time:
-
Permalink:
wanderbatistaf/wborm@f06a068e1f714c7cf5864115b37b99c379860c8d -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/wanderbatistaf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@f06a068e1f714c7cf5864115b37b99c379860c8d -
Trigger Event:
push
-
Statement type:
File details
Details for the file wborm-0.3.1-py3-none-any.whl.
File metadata
- Download URL: wborm-0.3.1-py3-none-any.whl
- Upload date:
- Size: 30.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49931ed5bb6aec0875b85935593ff9f2dd9f348dfd09d626a6ba7fe29f8693a2
|
|
| MD5 |
290b713e6768f4f94cce23ccd8a302c4
|
|
| BLAKE2b-256 |
e4339270b594481133ed94876ff553e36c6623bf48876ad22e1128f9cf59984e
|
Provenance
The following attestation bundles were made for wborm-0.3.1-py3-none-any.whl:
Publisher:
publish-package.yml on wanderbatistaf/wborm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wborm-0.3.1-py3-none-any.whl -
Subject digest:
49931ed5bb6aec0875b85935593ff9f2dd9f348dfd09d626a6ba7fe29f8693a2 - Sigstore transparency entry: 219617150
- Sigstore integration time:
-
Permalink:
wanderbatistaf/wborm@f06a068e1f714c7cf5864115b37b99c379860c8d -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/wanderbatistaf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@f06a068e1f714c7cf5864115b37b99c379860c8d -
Trigger Event:
push
-
Statement type: