Problema Con Update Sql En Tkinter (Python)

TomasSanchexx

No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
6 Jul 2021
Mensajes
80
Tengo un problema al hacer una actualización de datos en la base de datos externa,

Tengo este código que si lo ejecuto en consola funciona perfectamente.

Python:
import pymysql

con = pymysql.connect(host='uuu',
user='uuu',
password='uuu',
database='uuu',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)

city = (14, 'rivera', 2007654)
city1 = (21, 'Alcala2', 32276004)
nombre = "tary"
correo = "prueba@prueba.com"

def crearCliente():
try:
cur = con.cursor()
crearCliente = "UPDATE test1 SET name='"+nombre+"', email='"+correo+"' WHERE id = 19"
cur.execute(crearCliente)
con.commit()

#con.close()

print("Se guardo correctamente")
except:
print ("Error")

finally:
try:
con.close()
except:
None


def mostrarCliente():
try:
con1 = pymysql.connect(host='uuu',
user='uuu',
password='uuu',
database='uuu',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)


cur1 = con1.cursor()
mostrarCliente = "SELECT * FROM test1 WHERE id = 19"
cur1.execute(mostrarCliente)
rows = cur1.fetchall()

#con.close()

print("El cliente es:", rows)
except:
print("Error2")

finally:
try:
con1.close()
except:
None




crearCliente()
mostrarCliente()
print ("Se ha guardado")

Pero al hacer el código en tkinter, se ejecuta el aplauso perfecto, y hago clic en el botón y sale que se ha actualizado, pero miro la base de datos y no se ha cambiado nada.

Sin embargo, si ejecuto el código en la consola si funciona y se realiza el cambio, pero quiero hacerlo en una aplicación gráfica.

Python:
from tkinter import *
from tkinter import ttk
import pymysql

####### FUNCIONES #######

city = (9, 'Kiev', 2887000)

nombre = "TARY"
correo = "tary@tary.com"

def actualizarCliente():
try:
con2 = pymysql.connect(host='uuu',
user='uuu',
password='uuu',
database='uuu',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)


cur2 = con2.cursor()
actualizarCliente = "UPDATE test1 SET name='tomas' WHERE id = 19"
cur2.execute(actualizarCliente)

#con.close()

ttk.Label(mainframe, text="Se actualizo el cliente").grid(column=40, row=150, sticky=W)
except:
print("Error2")

finally:
try:
con2.close()
except:
None

def mostrarCliente():
try:
con1 = pymysql.connect(host='uuu',
user='uuu',
password='uuu',
database='uuu',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)


cur1 = con1.cursor()
mostrarCliente = "SELECT * FROM test1 WHERE id = 19"
cur1.execute(mostrarCliente)
rows = cur1.fetchall()

#con.close()

ttk.Label(mainframe, text=rows).grid(column=40, row=150, sticky=W)
except:
print("Error2")

finally:
try:
con1.close()
except:
None



####### VENTANA Tkinter #######

root = Tk()
root.title("Mostrar datos")
root.geometry("400x400")

mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

##### Textos y Botones #####

ttk.Label(mainframe, text="nada").grid(column=3, row=2, sticky=W)

ttk.Button(mainframe, text="MOSTRAR CLIENTE", command=mostrarCliente).grid(column=40, row=40, sticky=W)
ttk.Button(mainframe, text="ACTUALIZAR CLIENTE", command=actualizarCliente).grid(column=40, row=60, sticky=W)


root.mainloop()

¿Qué esta mal para que no se haga efectivo el cambio?
 

ArSk8

Épsilon
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Ene 2010
Mensajes
752
Te falta hacer el commit.

Insertar CODE, HTML o PHP:
con.commit()

Luego del execute()

PD: Usa algun ORM; no hagas todo ese trabajo asi, que ademas de ser mas laborioso, te va a traer problemas de seguirad. Por ejemplo usa sqlalchemy.
 

TomasSanchexx

No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
6 Jul 2021
Mensajes
80
Te falta hacer el commit.

Insertar CODE, HTML o PHP:
con.commit()

Luego del execute()

PD: Usa algun ORM; no hagas todo ese trabajo asi, que ademas de ser mas laborioso, te va a traer problemas de seguirad. Por ejemplo usa sqlalchemy.

Muchas gracias por su respuesta, era ese el problema.

¿Me podría explicar a lo que se refiere con ORM? No lo entiendo si me pudiese decir así por encima como es. Gracias.
 

Crea una cuenta o accede para comentar

Debes ser un miembro para poder comentar

Crear cuenta

Crea una cuenta en nuestra comunidad

Acceder

¿Ya tienes una cuenta? Accede aquí


Arriba