Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqliteplus_enhanced-1.0.6.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

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

sqliteplus_enhanced-1.0.6-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

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

Hashes for sqliteplus_enhanced-1.0.6.tar.gz
Algorithm Hash digest
SHA256 47f6ff1a07bd04534a25a0c445bc0a69b489a59892a9d81e815c8f82f961079f
MD5 dcdccf927def1e2b8eedfd16eedf31ed
BLAKE2b-256 575d9b5140ede772318cd2d67c5447871b0c18fe8893acae1318064867aaf4b4

See more details on using hashes here.

File details

Details for the file sqliteplus_enhanced-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for sqliteplus_enhanced-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5d9813bc432c01b08ff42fabcedff1d0ba923cea0fdd163ef4590dfc73650526
MD5 777a416061850389bff89d115109dafd
BLAKE2b-256 fbaf4d56e87b06e508b1ba1c49ce100d979df4d86693aad1240aab852980a4fd

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