Notas offline con SQLite: guardado idempotente y recuperación tras reiniciar
Una nota es útil si sobrevive al cierre de la aplicación. Antes de agregar colores, tareas y recordatorios, conviene responder una pregunta: ¿qué ocurre si el proceso se destruye después de escribir?
El problema y el alcance del ejemplo
La ficha de Notepad: Bloc de notas tareas resume su función así: «Apunta ideas, crea listas de tareas y organiza tus recordatorios diarios.» Notepad presenta notas, listas y recordatorios. Para ilustrar el almacenamiento local, construiremos una nota con actualización idempotente en SQLite. El esquema es didáctico, no una declaración sobre la base de datos usada por Notepad.
Cómo reproducir la idea
Necesitas Python 3. Guarda este archivo como notas.py; al ejecutarlo se creará notas_demo.sqlite3 en la carpeta actual.
import sqlite3
with sqlite3.connect('notas_demo.sqlite3') as db:
db.execute("""CREATE TABLE IF NOT EXISTS notas (
id INTEGER PRIMARY KEY,
contenido TEXT NOT NULL,
modificado TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
)""")
db.execute("""INSERT INTO notas (id, contenido) VALUES (?, ?)
ON CONFLICT(id) DO UPDATE SET
contenido=excluded.contenido,
modificado=CURRENT_TIMESTAMP""", (1, 'Comprar fruta y revisar tareas'))
with sqlite3.connect('notas_demo.sqlite3') as db:
nota = db.execute('SELECT contenido FROM notas WHERE id=?', (1,)).fetchone()
print('Nota recuperada:', nota[0] if nota else 'no existe')
Qué demuestra el código
La instrucción ON CONFLICT(id) DO UPDATE evita crear duplicados cuando se guarda repetidamente la misma nota con un identificador conocido. El bloque with confirma los cambios al salir sin errores, y la segunda conexión comprueba la persistencia.
Pruebas recomendadas
Ejecuta dos veces: el contenido debe seguir siendo una sola nota. Cambia el texto de la instrucción INSERT y ejecuta de nuevo: se reemplaza el contenido de la nota 1. Abre el archivo SQLite con un visor si quieres comprobar las filas.
Límites que conviene reconocer
No hay cifrado, búsquedas, adjuntos, conflictos entre dispositivos, backups ni gestión de notas borradas. La marca CURRENT_TIMESTAMP usa una precisión limitada; para sincronización suelen necesitarse identificadores estables, revisiones y reglas explícitas.
Qué aprendemos
Persistir no es simplemente «guardar una cadena»: es definir identidad, consistencia y recuperación después de que la interfaz desaparece.
Contexto y enlaces del autor
El tema se relaciona con las funciones declaradas públicamente de Notepad: Bloc de notas tareas, una aplicación Android de AppInitDev. El código anterior es un ejemplo independiente: no se ha inspeccionado el repositorio privado ni se afirma que sea la implementación interna de la app. La referencia aparece al final para ofrecer contexto, no como requisito para completar el tutorial.
- Google Play: Notepad: Bloc de notas tareas
- Página de la aplicación: https://notes-premium.appinitdev.com/
- Sitio del desarrollador: AppInitDev

Top comments (0)