SQLite mejorado con cifrado SQLCipher, caché en Redis y API REST asincrónica con FastAPI
Project description
SQLitePlus Enhanced
SQLitePlus Enhanced es un backend modular en Python con FastAPI que combina:
- 🔐 Autenticación JWT
- 🔄 Operaciones asincrónicas sobre múltiples bases de datos SQLite
- 🧠 Esquemas validados con Pydantic
- 📦 CLI sincrónico con Click
- 🔄 Soporte opcional para replicación, exportación y backups
🚀 Características principales
- Gestión de múltiples bases SQLite de forma asincrónica (
aiosqlite) - API REST completa para creación, inserción, consulta y eliminación de tablas
- JWT con FastAPI + OAuth2 (
/token) - CLI para ejecutar acciones sin servidor (
sqliteplus init-db, etc.) - Capa de caché opcional con Redis (soporte en utils)
- Cifrado compatible con SQLCipher (modo sincrónico en utils)
📦 Instalación
Requisito: Necesitas Python 3.10 o superior antes de continuar con la instalación.
pip install -e .
O si quieres publicar:
pip install sqliteplus-enhanced
🔐 Configuración obligatoria
Antes de iniciar la aplicación (o ejecutar utilidades como tests/test3.py) debes
definir dos variables de entorno críticas:
SECRET_KEY: se utiliza para firmar los tokens JWT.SQLITE_DB_KEY: se emplea para abrir bases de datos protegidas con SQLCipher.
La aplicación y los scripts rechazarán la ejecución si no las proporcionas.
Genera valores aleatorios en tu entorno con:
export SECRET_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
export SQLITE_DB_KEY=$(python -c "import secrets; print(secrets.token_hex(32))")
En Windows (PowerShell):
$Env:SECRET_KEY = python -c "import secrets; print(secrets.token_urlsafe(32))"
$Env:SQLITE_DB_KEY = python -c "import secrets; print(secrets.token_hex(32))"
📡 Ejecutar el servidor
export SECRET_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
export SQLITE_DB_KEY=$(python -c "import secrets; print(secrets.token_hex(32))")
uvicorn sqliteplus.main:app --reload
Accede a:
Swagger UI: http://localhost:8000/docs
Redoc: http://localhost:8000/redoc
🧪 Ejecutar tests
pytest -v
🛠 Uso del CLI
Antes de operar con bases cifradas puedes definir la clave vía variable de entorno
SQLITE_DB_KEY o proporcionarla explícitamente con --cipher-key.
export SQLITE_DB_KEY="$(python -c "import secrets; print(secrets.token_hex(32))")"
sqliteplus init-db
sqliteplus execute "INSERT INTO logs (action) VALUES ('via CLI')"
sqliteplus --cipher-key "$SQLITE_DB_KEY" backup
sqliteplus export-csv logs logs.csv
🧰 Estructura del proyecto
sqliteplus/
├── main.py # Punto de entrada FastAPI
├── api/ # Endpoints REST
├── auth/ # JWT y seguridad
├── core/ # DB async + schemas
├── utils/ # Módulos sync/CLI
└── tests/ # Tests automatizados
📝 Licencia
MIT License © Adolfo González
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 sqliteplus_enhanced-1.0.6.tar.gz.
File metadata
- Download URL: sqliteplus_enhanced-1.0.6.tar.gz
- Upload date:
- Size: 26.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47f6ff1a07bd04534a25a0c445bc0a69b489a59892a9d81e815c8f82f961079f
|
|
| MD5 |
dcdccf927def1e2b8eedfd16eedf31ed
|
|
| BLAKE2b-256 |
575d9b5140ede772318cd2d67c5447871b0c18fe8893acae1318064867aaf4b4
|
File details
Details for the file sqliteplus_enhanced-1.0.6-py3-none-any.whl.
File metadata
- Download URL: sqliteplus_enhanced-1.0.6-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d9813bc432c01b08ff42fabcedff1d0ba923cea0fdd163ef4590dfc73650526
|
|
| MD5 |
777a416061850389bff89d115109dafd
|
|
| BLAKE2b-256 |
fbaf4d56e87b06e508b1ba1c49ce100d979df4d86693aad1240aab852980a4fd
|