Banco de dados JSON simples com CRUD, cache, fila, backup e limites.
Project description
Banco Z
Banco Z é uma biblioteca simples de banco de dados em JSON. Ela salva arquivos dentro da pasta BANCO Z, permite criar, ler, atualizar e deletar dados, e também inclui cache, fila de operações, backup, limites e análise dos arquivos.
Este projeto tem duas versões:
bancoz.js: versão em JavaScript.bancoz.py: versão em Python, com a mesma ideia de uso.
Como Funciona
Cada arquivo JSON funciona como uma tabela/coleção, e cada nó funciona como um registro.
Exemplo:
bancoz.criar("clientes", "123", {"nome": "Caio", "saldo": 1000})
Isso cria:
BANCO Z/clientes.json
Com o conteúdo:
{
"123": {
"nome": "Caio",
"saldo": 1000
}
}
Uso Com Python
Importe a instância pronta bancoz:
from bancoz import bancoz
bancoz.criar("clientes", "123", {"nome": "Caio", "saldo": 1000})
print(bancoz.ler("clientes"))
print(bancoz.ler("clientes", "123"))
A saída será parecida com:
{'123': {'nome': 'Caio', 'saldo': 1000}}
{'nome': 'Caio', 'saldo': 1000}
Criar
bancoz.criar("clientes", "123", {
"nome": "Caio",
"saldo": 1000,
"limite": 5000
})
Ler
Ler o arquivo inteiro:
dados = bancoz.ler("clientes")
print(dados)
Ler apenas um nó:
cliente = bancoz.ler("clientes", "123")
print(cliente)
Atualizar
Atualização parcial usando objeto:
bancoz.atualizar("clientes", "123", {
"saldo": 1500
})
Atualizar uma chave específica:
bancoz.atualizar("clientes", "123", 2000, "saldo")
Substituir o nó inteiro:
bancoz.atualizar(
"clientes",
"123",
{"nome": "Caio", "saldo": 3000},
{"substituir": True}
)
Deletar
Deletar o nó inteiro:
bancoz.deletar("clientes", "123")
Deletar uma chave:
bancoz.deletar("clientes", "123", "saldo")
Deletar várias chaves:
bancoz.deletar("clientes", "123", ["saldo", "limite"])
Uso Com JavaScript
Como bancoz.js usa ES Modules, importe com import:
import bancoz from './bancoz.js';
await bancoz.criar('clientes', '123', {
nome: 'Caio',
saldo: 1000
});
console.log(await bancoz.ler('clientes'));
console.log(await bancoz.ler('clientes', '123'));
Se seu projeto Node ainda não usa ES Modules, adicione isto ao package.json:
{
"type": "module"
}
Pasta Dos Dados
Por padrão, os arquivos são salvos em:
BANCO Z/
Você pode trocar a pasta:
bancoz.path("meu-banco")
No JavaScript:
bancoz.path('meu-banco');
A pasta é criada automaticamente quando uma operação precisa ler ou salvar dados.
Cache
Ativar cache em memória:
bancoz.cache(True)
Ativar cache com expiração em minutos:
bancoz.cache(True, 5)
Ver estado do cache:
print(bancoz.getCache(False))
Fila
A fila processa operações em ordem:
bancoz.fila(True)
Alias em inglês:
bancoz.queue(True)
Backup
Ativar backup:
bancoz.bk(True)
Alias em inglês:
bancoz.backup(True)
Quando o backup está ativo, antes de alterar um arquivo existente a lib cria um arquivo .backup.
Logs
Ativar logs:
bancoz.log(True)
Trocar idioma:
bancoz.lang("en")
Idiomas disponíveis:
pten
Limites
Você pode limitar a quantidade de nós, subnós e arrays de um arquivo.
bancoz.limite("clientes", 10, 100, 20)
Ordem dos parâmetros:
arquivo, limite_de_nodes, limite_de_subnodes, limite_de_arrays
Ver limite e uso atual:
print(bancoz.getLimite("clientes"))
Remover limites:
bancoz.limite("clientes")
Limites Avançados
Limites avançados funcionam por nível de profundidade:
bancoz.limiteAvancado("clientes", {
"0": {"maxKeys": 10},
"1": {"maxNodes": 50, "maxSubnodes": 100}
})
Ver uso atual:
print(bancoz.getLimiteAvancado("clientes"))
Análise
Analisar arquivos JSON da pasta do banco:
resumo = bancoz.analise(False)
print(resumo)
Mostrar no terminal:
bancoz.analise(True)
IDs
Criar ID automático:
id_novo = bancoz.criarID()
print(id_novo)
Alias em inglês:
id_novo = bancoz.createID()
Aliases Em Inglês
A lib também aceita nomes em inglês:
bancoz.create("clientes", "123", {"nome": "Caio"})
bancoz.read("clientes", "123")
bancoz.update("clientes", "123", {"saldo": 2000})
bancoz.delete("clientes", "123")
Uso Async No Python
A instância bancoz é simples e não exige asyncio.
Se você quiser usar await dentro de uma aplicação async, use a classe Bancoz:
import asyncio
from bancoz import Bancoz
async def main():
db = Bancoz()
await db.criar("clientes", "123", {"nome": "Caio"})
print(await db.ler("clientes"))
asyncio.run(main())
Exemplo Completo Em Python
from bancoz import bancoz
bancoz.log(True)
bancoz.cache(True)
bancoz.bk(True)
bancoz.criar("clientes", "123", {
"nome": "Caio",
"saldo": 1000,
"limite": 5000
})
bancoz.atualizar("clientes", "123", 1500, "saldo")
print(bancoz.ler("clientes", "123"))
Exemplo Completo Em JavaScript
import bancoz from './bancoz.js';
bancoz.log(true);
bancoz.cache(true);
bancoz.bk(true);
await bancoz.criar('clientes', '123', {
nome: 'Caio',
saldo: 1000,
limite: 5000
});
await bancoz.atualizar('clientes', '123', 1500, 'saldo');
console.log(await bancoz.ler('clientes', '123'));
Arquivos De Teste
Este repositório inclui:
teste.py: teste simples da versão Python.teste.js: teste simples da versão JavaScript.
Rodar Python:
python3 teste.py
Rodar JavaScript:
node teste.js
Project details
Release history Release notifications | RSS feed
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 bancoz-1.0.0.tar.gz.
File metadata
- Download URL: bancoz-1.0.0.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1933012af040fd0c67372bdaf05bcc2cd222ceca647800c79d78834fb759ed4
|
|
| MD5 |
7baea9c59a1d1297f00bafb631e7243d
|
|
| BLAKE2b-256 |
3cbfd3679d16ad03260446ff6bce001cd5a0e43f3e11f72b0854481094a841f7
|
File details
Details for the file bancoz-1.0.0-py3-none-any.whl.
File metadata
- Download URL: bancoz-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57e15f14aeddbc7f58900fd2ff67f0e8dee7e5c348d70f89217f9cc1475aba83
|
|
| MD5 |
cad6cd29ae3f04abe0f6afcf56117537
|
|
| BLAKE2b-256 |
acca2c6548a833171dbfa280ab1552d51c661f173feaf3a69e11fb24c1defaae
|