Skip to main content

Banco de dados local com JSON — schemas, server REST, media, zero dependencias

Project description

Pybase logo

Pybase

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 Database, Query, Server
from pybase.validation import Schema

# Banco de dados
db = Database("./data", "mydb", "senha").open("senha")

# Colecao com schema (opcional)
db.schema("users", Schema({
    "id": str, "name": str, "email": str,
    "age": (int, 0), "active": (bool, True),
}))
users = db.collection("users")
users.add({"id": "1", "name": "marcos", "email": "m@m.com"})

# SDK client
doc = users.doc("1").get()
users.where("age", "==", 30).get()

# Consultas
q = Query(users)
q.sort("name").limit(10).find(active=True)
q.find_one(name="ana")
q.exists(name="joao")

# Servidor REST (requer Flask)
Server(db).route("users").run(port=4560)
# 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 0
Query pybase/query.py Consultas com sort/limit/offset 0
Schema pybase/validation.py Validacao de documentos 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 0

Estrutura

Pybase/
  pybase/
    __init__.py       # Database, Collection, Query, Server, ...
    database.py       # Database: init, open, collection, schema, drop
    collections.py    # Collection, SchemaCollection, DocRef, QueryBuilder
    query.py          # Query: find/find_one/exists + sort/limit/offset
    exceptions.py     # PybaseError > DatabaseError, CollectionError
    validation.py     # Schema, ValidationError
    server.py         # Server REST (Flask)
    media.py          # MediaManager
    index.py          # Index (hash O(1))
    hooks.py          # HooksCollection
    backup.py         # take, restore
    utils.py          # Utils: sha256 encode
  docs/               # Documentacao completa
  pyproject.toml

Novidades da versao (0.3+)

  • Schema validation — defina schemas opcionais por colecao, persistidos em disco, validacao automatica em add/add_many/actualize
  • Server RESTServer(db).route("x").run() gera CRUD automatico com Swagger UI e OpenAPI spec
  • MediaManager — upload de imagens (path, bytes, base64), CRUD de metadados, serve files via HTTP
  • SDK clientdoc("id").get(), where("f", "==", "v").get()
  • SchemaCollection — auto-wrap quando schema existe, validacao parcial em updates
  • Backuptake()/restore() com snapshot gzip atomico
  • Escrita atomica.tmp + os.replace() protege contra corrupcao
  • Path traversal fix — nomes de colecao sanitizados com regex
  • Sort seguro — tipos mistos (int + str) nao quebram mais
  • Indices em memoriaIndex(field) para lookups O(1)
  • Lifecycle hooksHooksCollection com callbacks before/after

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.3.0.tar.gz (17.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.3.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pybasedb_json-0.3.0.tar.gz
  • Upload date:
  • Size: 17.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.3.0.tar.gz
Algorithm Hash digest
SHA256 8941b1485adabd00b3af0c2731344f8337e4fe591e2cb94ac3a0e864b929fd20
MD5 3a608c59e946728d8ba60abc3226f439
BLAKE2b-256 ee4440dc0a4eb94a6b9b92a8a0e7094c2c48b8b65c86c5d47449d385f7841515

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pybasedb_json-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.5 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ba7bd94f892d030a8f79eec357851cfb9c19ecf0c529540ea6f5419ede2f5d77
MD5 67d00513e77f3b1762064899ebe315c0
BLAKE2b-256 05ec5a0bb31eefbbb56124bcbeec39baa92435dcca050d6c36b89d2fb94d2d9b

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