[ Foro de Python ]

porque se crea tabla.db-journal y no guarda registro

03-Oct-2025 21:35
won tolla
0 Respuestas

Hola a todos:
Principante de Python, tratando de entender que pasa con esta tabla y un registro nuevo.

Estoy siguiendo un "tutorial" para crear una aplicacion con Tkinter y una base de datos de sqlite3, de este video:
https://www.youtube.com/watch?v=7QqDQEZ3FTI

El código trabaja bien: crea la base de datos, le agrega una tabla, etc.
Pero cuando pasa a la parte de agregar un registro pasa lo siguiente:
La base de datos se llama peliculas y la tabla tambien se llama peliculas.
- La app se "detiene"
- No guarda el registro
- Se crea una segunda base de datos con nombre "peliculas.db-journal".
Cuando cierro la app, esta segunda base de datos desaparece y el registro nuevo jamas se guarda.
Ya hice una "prueba por fuera" sin el tkinter y algo muy sencillo y si funciona.
Este es el código que no funciona, especificamente la funcion SALVA.
Porfavor, ¿podrían ayudarme con alguna sugerencia?, gracias.


from model.conexion_db import conexionDB
from tkinter import messagebox

def crear_tabla():
   conexion = conexionDB()

   sql = '''
   CREATE TABLE peliculas(
   id INTEGER,
   nombre VARCHAR(50),
   duracion VARCHAR(10),
   genero VARCHAR(50),
   PRIMARY KEY(id AUTOINCREMENT)
   )
'''
   try:
       conexion.cursor.execute(sql)
       conexion.cerrar()
       tit = "Crear Registro"
       mensa = "Se creó la tabla en la DB"
       messagebox.showinfo(tit, mensa)

   except:
       tit = "Crear Registro"
       mensa = "La tabla ya existe"
       messagebox.showwarning(tit, mensa)

def borrar_tabla():
   try:
       conexion = conexionDB()
       sql = 'DROP TABLE peliculas'
       conexion.cursor.execute(sql)
       conexion.cerrar()
       tit = "Eliminar Registro"
       mensa = "Se eliminó la tabla en la DB"
       messagebox.showinfo(tit, mensa)
   except:
       tit = "Eliminar Registro"
       mensa = "La tabla no existe"
       messagebox.showerror(tit, mensa)

class pelucula:
   def __init__(self, nombre, duracion, genero):
       self.id = None
       self.nombre = nombre
       self.duracion = duracion
       self.genero = genero

   def __str__(self):
       return f'peliculas[{self.nombre}, {self.duracion}, {self.genero}]'

def salva(peli): #quitale pelicula mientras pruebas
   conexion = conexionDB()
   nnombre = "yo"
   nduracion = "20.5"
   ngenero = "no sabo"

   sql = f"""INSERT INTO peliculas (nombre, duracion, genero) VALUES('{peli.nombre}', '{peli.duracion}', '{peli.genero}')"""
   #sql = f"""INSERT INTO peliculas (nombre, duracion, genero) VALUES('{nnombre}', '{nduracion}', '{ngenero}')"""
   try:
       conexion.cursor.execute(sql)
       conexion.cerrar
   except:
       tit = "Conexión al Registro"
       mensa = "La tabla peliculas no existe"
       messagebox.showerror(tit, mensa)




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...