Banco de dados local com JSON — schemas, server REST, media, zero dependencias
Project description
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 REST —
Server(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 client —
doc("id").get(),where("f", "==", "v").get() - SchemaCollection — auto-wrap quando schema existe, validacao parcial em updates
- Backup —
take()/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 memoria —
Index(field)para lookups O(1) - Lifecycle hooks —
HooksCollectioncom 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8941b1485adabd00b3af0c2731344f8337e4fe591e2cb94ac3a0e864b929fd20
|
|
| MD5 |
3a608c59e946728d8ba60abc3226f439
|
|
| BLAKE2b-256 |
ee4440dc0a4eb94a6b9b92a8a0e7094c2c48b8b65c86c5d47449d385f7841515
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba7bd94f892d030a8f79eec357851cfb9c19ecf0c529540ea6f5419ede2f5d77
|
|
| MD5 |
67d00513e77f3b1762064899ebe315c0
|
|
| BLAKE2b-256 |
05ec5a0bb31eefbbb56124bcbeec39baa92435dcca050d6c36b89d2fb94d2d9b
|