Skip to main content

Banco de dados local com JSON — schemas, decorator API, server REST, criptografia, zero dependencias

Project description

Pybase logo

Pybase v0.4

Base para criacao de bancos de dados locais com JSON. Zero dependencias, 100% stdlib. Operacoes de escrita atomicas, thread-safe.

Filosofia Lego: cada modulo e independente — voce monta o que precisa.

Instalacao

pip install pybasedb-json

Para o servidor REST (opcional):

pip install Flask

Uso rapido

from pybase import pybase as pb

# Banco de dados (sem senha ou com senha)
db = pb.Database("./data/mydb")
# db = pb.Database("./data/mydb", password="senha").open("senha")

# Schema com decorator (v0.4+)
@db.schema.users
class User:
    name: str
    email: str
    age: int = 0
    active: bool = True

# Ou com T() explicito
# from pybase.validation import T
# db.schema.users = pb.Schema({"name": pb.T(str), "age": pb.T(int, default=0)})

# Colecao com validacao automatica
users = db["users"]
users.add({"name": "marcos", "email": "m@m.com"})  # auto-ID

# SDK client
doc = users["1"].get()
users.find(age=0)

# Consultas direto na colecao (v0.4+)
users.sort("name").limit(10).find(active=True)
users.find_one(name="ana")
users.exists(name="joao")

# Servidor REST (requer Flask)
pb.Server(db).run(port=4560)  # auto-detecta colecoes
# Swagger UI: http://localhost:4560/mydb/docs/

Modulos

Modulo Arquivo Descricao Deps
Database pybase/database.py Gerencia diretorio de tabelas JSON 0
Collection pybase/collections.py CRUD atomico thread-safe + query integrado 0
Query pybase/query.py Thin wrapper sobre Collection 0
Schema pybase/validation.py Validacao com T(), decorator, from_example 0
Server pybase/server.py REST API automatica + Swagger UI Flask
Media pybase/media.py Upload/download de imagens 0
Backup pybase/backup.py Snapshot e restore (seletivo) 0
Crypto pybase/crypto.py Criptografia stdlib (scrypt + XOR) 0

Novidades da v0.4

  • API simplificadaDatabase("./data/mydb") sem senha obrigatoria
  • update/delete — nomes em ingles, sem aliases pt-br
  • Auto-IDusers.add({"name": "x"}) gera UUID automatico
  • db["colecao"] — acesso direto via __getitem__
  • Query integradocollection.sort().limit().find() direto
  • @db.schema.nome — schema via decorator de classe
  • T() — nova API de tipos com kwargs (T(int, default=0))
  • Schema.from_example() — schema inferido de dados reais
  • import globalfrom pybase import pybase
  • PBKDF2 — hashing de senha com salt (600k iteracoes)
  • Criptografiaencrypt()/decrypt() stdlib puro
  • Server auto-detectServer(db).run() descobre colecoes
  • Erros descritivos — com path + valor + sugestao

Estrutura

Pybase/
  pybase/
    __init__.py       # Database, Collection, Query, Server, Schema, T
    pybase.py         # from pybase import pybase
    database.py       # Database, SchemaRegistrar
    collections.py    # Collection, DocRef, QueryBuilder, SchemaCollection
    query.py          # Query wrapper
    exceptions.py     # PybaseError > DatabaseError, CollectionError, ...
    validation.py     # Schema, T, ValidationError
    server.py         # Server REST (Flask)
    media.py          # MediaManager
    index.py          # Index (hash O(1))
    hooks.py          # HooksCollection
    backup.py         # take, restore
    crypto.py         # encrypt, decrypt (stdlib)
    utils.py          # PBKDF2 encode/verify
  docs/               # Documentacao completa
  pyproject.toml

Documentacao

Veja docs/ com referencia completa de cada classe e metodo.

Licenca

MIT

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

pybasedb_json-0.4.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

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

pybasedb_json-0.4.0-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file pybasedb_json-0.4.0.tar.gz.

File metadata

  • Download URL: pybasedb_json-0.4.0.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pybasedb_json-0.4.0.tar.gz
Algorithm Hash digest
SHA256 554ce3ec1d2a95976b8b7a27b8becfb9a19242ba05a110b1f7bd5b4fcd0ab039
MD5 42a11d8549a7af7b4711b2f81c9ca300
BLAKE2b-256 0d6f7f797d91850c3d7af38d0275ec3fd54c572305b45f4aada9f524072373e5

See more details on using hashes here.

File details

Details for the file pybasedb_json-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pybasedb_json-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pybasedb_json-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60289d5f089b51fe9453fc2f87d18e32b69ab8dcf3fe45348b2e5271a8efbf3c
MD5 620ddeafe8d1feb07e9a027273ed994e
BLAKE2b-256 c5b947fd8c334a9279a553216b7f63f791eb756286d83aa99f80c412fd629476

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