Skip to main content

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

Project description

Pybase logo

Pybase v0.5

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
db = pb.Database("./data/mydb")

# Schema com decorator
@db.schema.users
class User:
    name: str
    email: str
    age: int = 0
    active: bool = True
    tags: list[str] = []

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

# Operadores de query (v0.5+)
users.find(age__gt=18, name__contains="mar")

# Paginacao (v0.5+)
users.paginate(page=1, per_page=20)

# Transacao (v0.5+)
with db.transaction() as txn:
    txn["users"].add({"name": "ana"})

# Server com auth + CORS (v0.5+)
pb.Server(db, auth="token123", cors="*").run()

# CLI (v0.5+)
# $ pybase serve mydb --port=4560

Modulos

Modulo Arquivo Descricao Deps
Database pybase/database.py Gerencia diretorio de tabelas JSON 0
Collection pybase/collections.py CRUD atomico + query com operadores + JSONL 0
Filter pybase/filters.py Motor de filtros com 13 operadores 0
Query pybase/query.py Thin wrapper sobre Collection 0
Schema pybase/validation.py Validacao com choices, min/max, email, datetime, UUID, ref, JSON Schema 0
Ref pybase/ref.py Referencias entre colecoes 0
Server pybase/server.py REST API com auth, cors, patch, batch + Swagger UI Flask
CLI pybase/cli/ Linha de comando: init, inspect, serve, backup (ASCII + ANSI) 0
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
Hooks pybase/hooks.py Lifecycle hooks para Collection 0
Plugin pybase/plugin.py Sistema de plugins globais 0
Transaction pybase/transaction.py Multi-colecao commit/rollback 0
Migration pybase/migration.py Migracoes versionadas 0
Async pybase/async_.py Wrappers assincronos 0
Index pybase/index.py Indices hash O(1) (memoria + persistente) 0

Novidades da v0.5

  • Operadores de query__gt, __contains, __in, __has, __regex e mais 13
  • Paginacao.paginate(page, per_page){items, total, pages}
  • Projecao.select("name", "age") para campos especificos
  • Agregacao.aggregate([$match, $group, $sort, ...])
  • Schema avancadochoices, min/max, email, url, datetime, UUID, ref
  • RefRef("users", "abc").resolve(db) para referencias entre colecoes
  • JSON Schema.to_json_schema() export draft-07
  • CLIpybase init, inspect, serve, backup, query, schema, ...
  • Server authServer(db, auth="token"), Basic Auth, callback
  • Server CORSServer(db, cors="*") ou lista de origens
  • PATCH — atualizacao parcial via REST
  • Batch — operacoes em lote via REST
  • Transacoeswith db.transaction() as txn: commit/rollback
  • PluginsPlugin class com on_add, on_update, etc
  • MigracoesMigration(db).add(ver, fn).run()
  • AsyncAsyncCollection, AsyncDatabase (via asyncio.to_thread)
  • Eventoscol.on("add", cb) observer pattern
  • JSONL — formato linha-por-linha para append O(1)
  • Lock multi-processoCollection(lock_type="process")
  • PersistentIndex — indice salvo em disco
  • Clonedb.clone(dest) copia banco
  • Context managerwith Database(...) as db:

Estrutura

Pybase/
  pybase/
    __init__.py       # Database, Collection, Query, Server, Schema, T, Filter, Ref
    __main__.py       # python -m pybase
    pybase.py         # from pybase import pybase
    database.py       # Database, SchemaRegistrar
    collections.py    # Collection, DocRef, QueryBuilder, SchemaCollection
    filters.py        # Filter: operadores de query
    query.py          # Query wrapper
    exceptions.py     # PybaseError > DatabaseError, CollectionError, ...
    validation.py     # Schema, T, ValidationError
    ref.py            # Ref: referencias entre colecoes
    server.py         # Server REST (Flask) com auth/cors/patch/batch
    cli/              # CLI: init, inspect, serve, backup (ASCII + ANSI)
    media.py          # MediaManager
    index.py          # Index + PersistentIndex
    hooks.py          # HooksCollection
    backup.py         # take, restore
    crypto.py         # encrypt, decrypt (stdlib)
    plugin.py         # Plugin system
    transaction.py    # Transaction commit/rollback
    migration.py      # Migration versionada
    async_.py         # AsyncCollection, AsyncDatabase
    lock.py           # FileLock multi-processo
    utils.py          # PBKDF2 encode/verify
  docs/               # Documentacao completa (23 paginas)
  index.html          # Documentacao web
  pyproject.toml

Documentacao

Veja docs/ ou index.html 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.5.0.tar.gz (33.2 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.5.0-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pybasedb_json-0.5.0.tar.gz
  • Upload date:
  • Size: 33.2 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.5.0.tar.gz
Algorithm Hash digest
SHA256 a43b191436277475a8ec166e13bc7363e48cb75b8233fb36c67a62bca495d40e
MD5 7edf5f14aef03da191910400116cd635
BLAKE2b-256 db89fd76d4b57acd56ebad949a39a10f602c64d2a248e0c3adebb3021c2e9b84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pybasedb_json-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 38.0 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5313d1bae63d6379876b66195a88d9bad9d168341d7998b7e1ac81ceb770a086
MD5 fcb9516f9314c6fdb82eff991322e23e
BLAKE2b-256 60f32049a827671b4a4ba59d514aa2e3f18687e73a89ba7d256b4c23387b14be

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