Banco de dados NoSQL simples baseado em arquivos JSON
Project description
jsonbox
Banco de dados NoSQL simples que salva tudo em arquivos JSON.
Sem servidor, sem instalação complexa. Só Python puro + arquivos.
pip install -r requirements.txt
Estrutura
jsonbox/
core/
database.py → abrir/criar banco com senha
tables.py → CRUD nas tabelas (add, find, remove, view, update, schema)
scripts/
cli.py → usar pelo terminal
Cada tabela vira um arquivo {nome}_tbl.json. Cada banco vira uma pasta com um {nome}_conf.json de configuração.
Começar rápido
import os
from dotenv import load_dotenv
from jsonbox.core.database import Database
from jsonbox.core.tables import Tables
load_dotenv()
db = Database(
os.getenv('path'), # pasta onde criar o banco
os.getenv('name'), # nome da pasta do banco
os.getenv('user'), # usuario
os.getenv('passw'), # senha
)
db.create()
database = db.open() # retorna Path da pasta
tbl = Tables(database, ['users', 'produtos']).autocreate()
Arquivo .env obrigatório:
path=/home/voce/meuprojeto
name=meu_banco
user=admin
passw=123
API completa
Database
| Método | O que faz | Retorna |
|---|---|---|
create() |
Cria a pasta do banco + config com user/senha | Path |
open() |
Autentica e libera acesso ao banco | Path ou False |
db = Database('/pasta', 'nome_do_banco', 'admin', '123')
db.create() # cria pasta + config se nao existir
caminho = db.open() # autentica e devolve o Path
if not caminho:
print('senha errada')
Tables
| Método | O que faz | Retorna |
|---|---|---|
autocreate() |
Cria arquivos {tabela}_tbl.json vazios se nao existirem |
self (pra encadear) |
add(tabela, dados) |
Insere um dict na tabela | bool |
find(tabela, **filtros) |
Busca registros | list[dict] |
remove(tabela, **filtros) |
Remove registros | list[dict] (removidos) |
view(tabela) |
Mostra tudo na tela | list[dict] |
update(tabela, dados, **filtros) |
Atualiza campos dos registros que batem | int (quantidade) |
schema(tabela, campos) |
Define campos obrigatorios | bool |
autocreate()
Cria as tabelas da lista se ainda nao existirem.
tbl = Tables(database, ['users', 'produtos']).autocreate()
# Cria: users_tbl.json e produtos_tbl.json
add()
Insere um registro. Respeita schema se tiver.
tbl.add('users', {
'name': 'marcos',
'email': 'marcos@test.com',
'password': '123456',
})
# True → deu certo
# False → tabela nao existe ou schema barrou
find()
Filtra registros. Pode ser exato ou parcial.
# Busca exata (padrao)
tbl.find('users', name='marcos')
# → [{'name': 'marcos', 'email': '...', 'password': '...'}]
# Busca parcial (pedaco do texto)
tbl.find('users', partial=True, name='mar')
# → [{'name': 'marcos', ...}]
# Multiplos filtros (match_all=True → E, match_all=False → OU)
tbl.find('users', match_all=True, name='marcos', email='x')
remove()
Remove registros que baterem com o filtro. Filtro obrigatorio.
removidos = tbl.remove('users', name='marcos')
# retorna a lista dos que foram removidos
removidos = tbl.remove('users', partial=True, email='test')
view()
Mostra todos os registros da tabela no terminal.
tbl.view('users')
# printa bonito e retorna a lista
update()
Altera campos de todos os registros que baterem com o filtro. Filtro obrigatorio.
qtd = tbl.update('users', {'email': 'novo@email.com'}, name='marcos')
# retorna quantos registros foram alterados (int)
schema()
Define campos obrigatorios para add(). Se faltar, o add() rejeita.
tbl.schema('users', ['name', 'email', 'password'])
# Agora add() so aceita se tiver TODOS esses campos:
tbl.add('users', {'name': 'joao'})
# → False (faltou email e password)
tbl.add('users', {'name': 'joao', 'email': 'j@j.com', 'password': '123'})
# → True
Schema e opcional. Se nao definir, add() aceita qualquer dict.
CLI (terminal)
Todos os comandos disponiveis direto no terminal:
python -m jsonbox.scripts.cli add users '{"name":"joao","email":"j@j.com"}'
python -m jsonbox.scripts.cli view users
python -m jsonbox.scripts.cli find users name=joao
python -m jsonbox.scripts.cli find users name=jo --partial
python -m jsonbox.scripts.cli remove users name=joao
python -m jsonbox.scripts.cli update users '{"email":"x"}' name=joao
python -m jsonbox.scripts.cli schema users name email password
Como os dados ficam salvos
database_test/ ← pasta do banco
database_test_conf.json ← config (user + senha)
users_tbl.json ← dados da tabela "users"
users_schema.json ← schema da tabela "users" (opcional)
merchant_tbl.json ← dados da tabela "merchant"
Licenca
MIT — use, copie, modifique, venda. So nao reclame se perder dados.
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 jsonbox_nosql-1.0.0.tar.gz.
File metadata
- Download URL: jsonbox_nosql-1.0.0.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d0b4dcee96efdafb125acf61a60903b16b4ef8f5124615bf9b39cf1c0ad6778
|
|
| MD5 |
1848ca21489a4148bc4326f724c503a4
|
|
| BLAKE2b-256 |
808eed2c7a12b586e60e3523f4cdfa111650bced226dc3f082d6a81d77c76124
|
File details
Details for the file jsonbox_nosql-1.0.0-py3-none-any.whl.
File metadata
- Download URL: jsonbox_nosql-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65111ce65a11b53e5c84c2dfc030ba42ff5c5b57eb5d5dc2d75815c9a154eeee
|
|
| MD5 |
5bf5f81a8e09923a06f581bbeef5d404
|
|
| BLAKE2b-256 |
e9c6857d4cec24e3cf467dc557ab2d8bfeab85865d3d31b8f0af8a4a54c26145
|