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 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()eafter_update() - Criptografia e cache de modelos com
model_cache - Stub
.pyiautomá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()exigemconfirm=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 = 60spor 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
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.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
506f16db5c2ae8890d6c942966a412f3dbb2d514d5c6de9fc32c986572fd5ed2
|
|
| MD5 |
6f2c22092e9b102fc3ca568aecd2a5e5
|
|
| BLAKE2b-256 |
d165f5f01d27ea93dea9bad09b58ae3a89fca3f0ac63a3249cdca19aca37532f
|
Provenance
The following attestation bundles were made for wborm-0.2.0.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.2.0.tar.gz -
Subject digest:
506f16db5c2ae8890d6c942966a412f3dbb2d514d5c6de9fc32c986572fd5ed2 - Sigstore transparency entry: 195586347
- Sigstore integration time:
-
Permalink:
wanderbatistaf/wborm@5f62b2077c2a40cb3e789056768280619ac82670 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/wanderbatistaf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@5f62b2077c2a40cb3e789056768280619ac82670 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5706be3d4e280bf0e44c4dcc65533363b056a12e79cede5622d42b7fdcdf86d
|
|
| MD5 |
6fca45cc89411e4a64f5509f16908f2c
|
|
| BLAKE2b-256 |
d6c947f15aa9cce1195f66f818a5cc274f0827c33f760249e2f53bc111ce66e5
|
Provenance
The following attestation bundles were made for wborm-0.2.0-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.2.0-py3-none-any.whl -
Subject digest:
b5706be3d4e280bf0e44c4dcc65533363b056a12e79cede5622d42b7fdcdf86d - Sigstore transparency entry: 195586349
- Sigstore integration time:
-
Permalink:
wanderbatistaf/wborm@5f62b2077c2a40cb3e789056768280619ac82670 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/wanderbatistaf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@5f62b2077c2a40cb3e789056768280619ac82670 -
Trigger Event:
push
-
Statement type: