Skip to main content

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:

  • pt
  • en

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


Download files

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

Source Distribution

bancoz-1.0.0.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

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

bancoz-1.0.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

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

Hashes for bancoz-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e1933012af040fd0c67372bdaf05bcc2cd222ceca647800c79d78834fb759ed4
MD5 7baea9c59a1d1297f00bafb631e7243d
BLAKE2b-256 3cbfd3679d16ad03260446ff6bce001cd5a0e43f3e11f72b0854481094a841f7

See more details on using hashes here.

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

Hashes for bancoz-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57e15f14aeddbc7f58900fd2ff67f0e8dee7e5c348d70f89217f9cc1475aba83
MD5 cad6cd29ae3f04abe0f6afcf56117537
BLAKE2b-256 acca2c6548a833171dbfa280ab1552d51c661f173feaf3a69e11fb24c1defaae

See more details on using hashes here.

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