¿Te gustaría aprender a hacer un CRUD? O sea, guardar datos, modificar datos, mostrar datos y eliminar datos utilizando Python, IMAX SQL e interfaces gráficas con la librería Techinter Pues a continuación te enseño a programarlo Bien, lo primero que tenemos que hacer es, tenemos que abrir nuestro Visual Studio Code Y ahí, lógicamente ya tenemos instalado nuestro... python verdad entonces aquí ya lo tengo super abierto yo tengo abierto mi visual estudio code y vamos a hacerle clic donde dice open folder y en el escritorio en este caso en escritorio voy a crear una nueva carpeta se va a llamar crud python python guión bajo mysql mysql o mysql bien en esta carpeta nosotros vamos a ingresar y esta sub está vacía ahí vamos a hacerle clic donde dice seleccionar carpeta ok seleccionar carpeta bien y lo que vamos a tener a continuación es esto de aquí nuestra carpeta y como sé que estoy dentro de la carpeta pues está en la parte de aquí en la parte izquierda explorer está con el nombre de mi carpeta ahí es como yo me voy a dar cuenta de que estoy dentro de la carpeta vacía que acabo de crear y donde voy a crear pues mi proyecto de python con mysql bien y ahora lo que yo voy a necesitar es crear un archivo python así que le voy a hacer clic aquí donde dice new file voy a ponerle de nombre python mysql python python mysql mysql o mysql.py no te olvides de la extensión.py para que se sepa nuestro visual studio code que se refiere a un archivo de tipo python aquí.py bien y lo que tenemos aquí pues ya es nuestro archivito nos vamos a cerrar esta ventanita del welcome. Listo. Y aquí vamos a importar cosas importantes.
Vamos a necesitar o vamos a usar la librería Techinter, que es la que nos va a ayudar a crear la interfaz gráfica que vamos a necesitar en este crudo. Bien, entonces para eso vamos a importar esta librería que te acabo yo de mencionar. entonces para hacer eso tengo que lógicamente escribir la palabra import de quinter as decay y como tú sabes aquí la palabra as en python como en muchos lenguajes de programación vendría a ser como ponerle una etiqueta a una variable Entonces, para no hacer llamada a TKinter, le estoy poniendo como una etiqueta que se llame TK.
Bien, eso es lo único que estoy haciendo. Pero estoy importando esta librería importantísima, el TKinter, que es la que nos va a permitir crear nuestras interfaces gráficas. Bien, ya. Ahora vamos a comentar y vamos a poner... Vamos a importar los módulos restantes.
restantes de tecinter ok y vamos a importar los módulos restantes de tecinter bien y cuáles son esos módulos pues son tres para ser más exactos entonces ya no vamos a decir importe porque vamos a importar los módulos específicos de tecinter entonces lo vamos a ir front tecinter quiero que no importes de la librería tecinter importe todos los módulos que estén disponibles pero no solamente eso también voy a necesitar importar módulos específicos como el TTK y otro módulo específico que es el de mensaje box no y qué es esto ya bien este títico y lo vamos a ver cómo es que lo vamos a utilizar más adelante y el mismo el mensaje box momis h box tendría a ser el ese mensaje pop que nos va a indicar si es que el registro ha sido registrado o no ese mensaje que sale un mensaje pop pues es eso justamente bien entonces momento es el único que vamos a importar el resto ya ya vamos a importarlo de acuerdo a como vamos avanzando lo guardamos, control S, ya tenemos hasta ahí super claro, entonces vamos aquí a crear nuestra clase class, que se va a llamar formulario artículos o clientes, no formulario clientes, porque nuestra base de datos lo que va a hacer es que va a registrar los clientes bien entonces formulario clientes dos puntos esa sería la sintaxis para tener ya disponible pues nuestra nuestra clase y nuestro archivo guardamos y nos sale un error porque no le estamos diciendo dónde está finalizando esta clase entonces es importante también señalarte a estas alturas del tutorial que tú ya sabes de que no hay un punto y coma o cosa similar en python que nos identifique dónde inicia y dónde termina pues en la sentencia lo que trabaja como trabaja python es que ejecuta de forma lineal y las la separación de las instrucciones pues se basa en espacios en estos espacios en blanco, en este caso este espacio en blanco vendría a ser lo que va a separar lo del contenido del formulario class entonces para eso vamos a necesitar algunas algunas variables pero antes de necesitar esas variables aquí vamos a crear una función para crear una función la diferencia de lenguaje es como ya va donde escribimos la palabra función para python vamos a utilizar la palabra def eso hace referencia a una función nuestra función se va a llamar formulario porque aquí vamos a crear la interfaz de del formulario de clientes y dos puntitos para decirle que ahí va a terminar el nombre de mi formulario en este caso de mi función ok, ya, ahora lo que yo voy a necesitar es algo importante voy a utilizar siempre mi try catch, tú sabes que el try catch nos va a permitir el manejo de excepciones todo lo que se ejecuta correctamente va a estar en el try y todos los errores o excepciones que me vote mi aplicación la voy a programar el mensaje de error pues en el catch pero python no tiene el try y catch como tal lo que sí tiene es el try el try si está tal cual entonces voy a escribir try pero el catch no funciona de esa forma el catch vendría a ser lo que es el excepto excepción entonces escribimos excepto y le vamos a decir que maneje un error convencional, value error, as error, vamos a guardar en esa variable el error, en la variable que se llama error. Ahí vamos a guardar ese error, y si es que llegara a pasar algo, pues que nos muestre ese error. Justamente, ok, le vamos a poner error al mostrar la interfaz, porque ahí vamos a programar la interfaz. coma error que errores y entre llave citas punto format le vamos a dar un formato la variable error que vendría a ser esta de aquí que trae excel vamos a dejarle con sus como nos sale un error porque no estoy colocando nada aquí apenas empecemos a llenar pues el try except para trabajar de forma normal pero ya tengo programada lo que es mi except bien entonces ahora todo mi interfaz lo voy a programar dentro de mi try que va a ser un poquito difícil pero sin duda nos va a servir mira así es como nosotros vamos a diseñar el track primero vamos a crear una variable que se llame base va a ser igual a un objeto tic y es importante señalarte de que en python casi todo es un objeto como tal por eso aquí es que voy a crear una variable base que va a ser igual a ticket que es el ticket vendría a ser justamente a mi librería tecinter que me va a ayudar a crear pues esta interfaz hasta ahí no he hecho nada, solamente estoy creando un objeto de tipo interfaz de una ventanita bien, ahora le voy a decir que esta variable que ya tiene los elementos para poder crear esta interfaz que le voy a decirte qué dimensión va a ser la ventana que va a crear. Y eso lo voy a utilizar o lo voy a hacer con la palabra Geometry.
Aquí le voy a decir quiero una de 1200x por 300 píxeles. Perfecto. Y luego va a tener un título, porque tiene que tener un título, ¿verdad? Title.
Title. Y el título va a ser formulario Python. Listo. Listo. Formulario Python.
¿Qué más yo voy a necesitar para que esto me funcione de forma correcta? De momento ahí me tendría que trabajar normal, pero necesito que se cierre normal y que solamente para probar, es importante señalarte que no solamente, como lo estamos haciendo, la interfaz no se crea. así como en otros lenguajes, pues quizás de una forma más fácil, más sencilla, tenemos que señalar exactamente las dimensiones del título y que se pueda cerrar correctamente y funcionar correctamente.
Y para eso vamos a necesitar un base. seguimos siendo llamado a nuestra variable base main loop no para que se pueda cerrar bien ahora nada más era básicamente eso ahora cómo vamos a probar que esto está funcionando para probar que esto está funcionando va a ser algo súper sencillo vamos a llamar a nuestro formulario la nuestra función formulario pero mira qué altura tenemos que llamar a la altura de mi clase formulario acá formulario vamos a llamar a nuestra variable formulario acá le tenemos que poner unos espacios para que pueda trabajar de una mejor manera y nos pueda llamar o podamos tener acceso aquí está ya está perfecto entonces esto es importantísimo si es importantísimo porque tiene que estar a la misma altura de nuestra función porque tiene que estar a la misma altura de nuestra función súper súper sencillo no mira estoy aquí recuerda que todo lo que es Todo lo que es Python trabaja en base a espacios. Entonces esto también tendríamos que mandarlo aquí. A ver, vamos a ver. Para que pueda trabajar de forma normal.
Bien. Para que esté dentro de mi try. Vamos a ordenar un poquito.
Para que los espacios funcionen de la mejor forma posible. Ok. Aquí.
A ver, vemos nuestro class. ¿En qué medida está? Está bien. Está perfecto.
vamos aquí nuestro def nuestro espacio que va a funcionar bien aquí nuestro espacio nuestro espacio y listo perfecto ahí vamos a ver de que el def nos dice que está a la misma altura esto va a ser conveniente o no va a ser conveniente pues eso tenemos que revisarlo bien de momento lo podemos lo podemos poner dentro solamente para poder llamar a nuestro formulario aquí y listo ya solamente lo alineado para que esté un poco mejor luego quizás llegamos a cambiar estos espaciados ok pero de momento va a funcionar bien ahora voy a ejecutar le hago clic aquí en el triangulito porque tú ya tienes instalado python y me va a mostrar esta interfaz completamente vacía lógicamente formulario python que es el título que le hemos puesto y las dimensiones que deberíamos ver tendría que ser 300 de altura por 1200 de largo y si le hacemos clic en el botón de cerrar pues se cierra normal Entonces hasta ahí ya tenemos creado nuestro formulario de forma no convencional. Ok, ya tenemos el formulario. Entonces esta parte aquí se va a hacer punto main loop. Tendremos que mandarla al final.
Ok, tenemos que mandarla al final siempre. Porque eso va a permitir que nuestra ventana funcione mejor. No que funcione mejor, que se pueda cerrar. Que no tenga ningún tipo de inconvenientes al momento de mostrarse o cerrarse.
bien ahora lo que tenemos que hacer es llenar ese formulario en la que se forman y para llenar ese formulario tenemos que hacer cosas importantes tenemos que señalarlo a detalle a súper súper súper detalle ok y para hacerlo súper súper súper detalle vamos a crear una variable que se llama group box group box que va a ser igual a un label frame y no vamos a tener que mostrar pues vamos a tener que agrupar voy a ejecutar primero como es que vamos a diseñar la interfaz bien aquí lo voy a dibujar en este linterna es verdad lo que vamos a hacer es que vamos a crear un group box que como tú sabes el group box vendría a ser un panel un control que va a almacenar otros controles más pequeños vamos a crear dentro de este grupo box acá va a estar titulado acá arribita como datos personales datos personales así va a decir así va a decir esto Luego de eso, dentro de aquí van a ver diferentes caracteres. Acá va a haber para llenar el código, el nombre, el apellido, el sexo. Y aquí vamos a tener que señalar esto de aquí.
Aquí vamos a ID. Vamos a tener que señalar también otros como aquí. Le vamos a tener que señalar como nombres.
Así es como nosotros los vamos a diseñar, ¿ok? Aquí vamos a diseñar el que diga apellidos. Apellidos.
Aquí vamos a diseñar el que diga sexo, ¿no? Que va a tener que ser un desplegable. Luego aquí vamos a tener que poner el botón de guardar, el botón de modificar, el botón de eliminar. Ok, espera, no se ve bien, Fran. Ya lo borré, pero no hay problema.
ya entonces ya sabes aquí vamos a crear ese ese grupo que va a tener estos controles de nombres hay de nombres apellidos y sexo y a la par vamos a crear aquí al lado otro donde va a ver dónde va a estar la listado todos los registros y aquí van a estar todos los registros que nosotros vamos a ir ingresando entonces es el label frame que acabamos de crear es justamente esto de aquí es este contenedor es un contenedor de controles entonces eso es este grupo label frame el primer grupo el que está a la izquierda bien entonces ahora que más o menos te quedado claro tenemos que hacer referencia primero donde vamos a crear donde va a estar ese club box va a estar en mi formulario que se llama base entonces digo que lo crees ahí que va a tener un texto como título y su título va a ser datos del personal no el personal o de los clientes en este caso datos de personal y luego le vamos a decir al igual como hay muchas veces en la programación web le podemos poner un pad que vendría a ser un espaciado entre elementos no unos márgenes va a ser igual de 5 para x el patria va a ser un espaciado de 5 también listo ahora vamos a seguir programando nuestro group box vamos a decirle que vamos a ponerla en una grilla donde Te voy a explicar en un momento que es la grilla ROM 0, column 0. ¿Por qué es que le estoy metiendo column 0 y por qué ROM 0? Mira, ROM 0, column 0 y luego el pad X, 10 y el pad Y, que como te dije son los márgenes que vendría a ser el de 10. Entonces, ¿por qué es esto? Explico, mira, vamos a ejecutar y este es nuestro formulario, ¿verdad? Hasta ahí súper claro. Y como yo te dije, el gridbox vendría a ser un contenedor que está aquí.
¿Cuántos contenedores vamos a tener? Dos, ¿verdad? Este y este.
Pero si tú lo ves desde el punto de vista de una grilla, esta vendría a ser la columna 1. esta vendría a ser la columna 1, esta vendría a ser la columna 2, esta tendría que ser la fila 1, esta también la fila 1, pero en programación tú sabes que todo inicia en 0, entonces esta tendría que ser la fila 1, 0 está la fila 0 también es de la columna 0 y esto sería la columna 1 entonces así vamos a utilizar los elementos por eso por eso como puedes ver aquí vamos a hacer un poco más zoom así por eso es que así es como nosotros estamos realizando estamos agrupando los todo en una grilla por eso es que este grupo está en la fila 0 y en la columna 0 el otro grupo box estaría en la fila 0 y en la columna 1 verdad Entonces trabaja de esa misma forma. Ok. Entonces hasta ahí te quedó súper claro. Pero Fran, tú has ejecutado y no te ha salido nada. A pesar de que has programado el GroupBox.
Sí, es verdad. No me ha salido nada. Mientras yo no le ponga nada a este GroupBox, no me va a salir nada.
Mientras no le ponga nada. Ahorita yo lo he creado. Existe. Le he puesto el título, sí.
Pero no hay ningún elemento dentro. Por eso no me muestra. Ahora le voy a poner un elemento y vas a ver que ahí sí me va a mostrar.
Y los elementos. del group box de la izquierda pues son elementos que tenemos que llenar como son los campos que vamos a guardar modificar y eliminar verdad entonces vamos a crear aquí una variable que se va a llamar label como etiqueta id porque el primer campo que vamos a crear va a ser el del id va a ser igual a label porque es una etiqueta y los parámetros que me va a pedir primero me va a decir donde lo vas a crear esta etiqueta, yo le digo dentro de mi group box luego cual va a ser el contenido de la etiqueta va a decir id dos puntos o id, listo luego de cuánto va a ser sus longitudes, yo le voy a decir que de 13 luego, qué tipo de letra vas a utilizar en font, yo le voy a decir es algo un tipo de letra convencional que es el areal y de tamaño le voy a decir que es el tamaño 12, bien ahora, dentro de la grilla, qué posición voy a ocupar Bien, voy a ocupar la fila 0 y la columna 0 también. Perfecto, lo guardo, ejecutamos y ya me tendría que mostrar. Y como puedes visualizar aquí, el GrootBox ya me muestra el primer elemento, que es el ID. Pero, ¿qué sucede aquí?
Mira, porque yo le he puesto el Room 0, Column 0 dentro del GrootBox. Bien, entonces toma atención, mira. cómo es que estamos vamos a empezar a ordenar esto aquí vamos a tener este group box verdad aquí va a estar bien entonces mira acá van a estar diferentes elementos va a estar esta la etiqueta y de que está ahí luego su campo y luego aquí va a estar el de nombre va a estar el de apellido y va a estar el de sexo y va a tener su campo su campo este va a ser un desplegable verdad un desplegable bien entonces si nosotros no lo vemos como una grilla aquí tenemos que evaluar lo siguiente tenemos que empezar a evaluarlo como una cría como tal entonces para evaluarlo con una grilla como tal es importante señalar de que tenemos que decirle qué posición está en este caso cuántas columnas hay esto sería la columna 0 esta sería la columna 1, esta sería la fila 0, esta sería la fila 1, esta sería la fila 2, esta sería la fila 3, esta sería, seguiría siendo la columna 1, o claro la columna 1 también la columna 1 y la fila tú ya sabes que es row row es fila y column es column entonces por eso el primer elemento que es aquí el de id es vendría a ser la fila 0 que cumple que es la fila 0 en la columna 0 porque aquí está nuestra sería también y la 1 columna 0 fila 2 columna 0 y la 3 columna 0 esta sería columna 1 fila 0 y la cero esta columna 1 y la 1 columna 1 y la 2 columna 1 y fila 3 así vendrían a ser los elementos de la misma forma que iban a tener los botoncitos de los botoncitos tendrían que ser la fila 4 la columna 0 la columna 1 y la columna 2 para los 3 botones entonces todo está ordenado de acuerdo a una grilla por eso es que esta etiqueta y está en la fila 0 que cumple en la columna 0 también es súper claro verdad bien entonces como eso ya me has entendido el siguiente elemento va a ser va a tener que ser un el text box de este verdad le vamos a poner como nombre esta variable text box xbox ahí va a ser igual a entrar en trade porque va a ser un un tipo de control que vamos a poder digitar e incorporar los datos por teclado por eso es de tipo en trade donde vamos va a aparecer en el grupo box bien y ahora le vamos a decir su posición en la grilla punto grid su posición en la grilla va a ser ya sabes mentalmente en la rom 0 porque está en la misma línea pero en la columna 1 en la columna 1 y cumple mira ejecutamos y ahora si está esta vendría a ser como puedes ver esta vendría a ser la columna 0 y la fila 0 esta vendría a ser la columna 1 y fila 0 y se cumple con lo que nosotros acabamos de crear no que está aquí aquí debajo columna 1 de la columna 1 y la fila 0 el de nombres va a tener que ser la la fila 1 y la columna 0 entonces eso vamos a seguir diseñando pero ya lo vamos a hacer un poquito más rápido porque vamos a poder copiar este label id, vamos a pegarlo para nombres y para apellidos, solo vamos a cambiar las etiquetas, aquí ya no se va a llamar label id, sino label nombres, acá va a decir nombres dos puntos, además lo dejamos tal cual, lo único que vamos a variar es esto, en la etiqueta va a estar en la tal cual no la etiqueta va a ser en la fila en la fila 1 sería y en la columna 1 vamos a ver el aire y le dice a ron 0 vendría a ser ron ron 0 perfecto columna 1 y el otro vendría a ser de forma distinta aquí le igual box acá sólo copie uno no sólo copiando ya bien entonces aquí también va a trabajar de igual forma pero vamos a cambiar aquí nombres aquí vamos a poner label apellidos le digo el apellidos y aquí apellidos ahora le vamos a poner su posición correcto que apellidos apellidos solamente es un copy y un page verdad entonces por el caso de nombre sería 1 y 1 1 y 1 porque estamos recorriendo por el caso de apellidos vendría a ser 2 y 1 ejecutamos y vamos a ver si es que está cumpliendo si efectivamente no acá están 2 y 1 lo que nos faltaría tendría a ser las etiquetas para cada uno aquí en las etiquetas para cada uno sería ahí de 0 1 nombres arial aquí 1 1 y 2 1 bien leí bol apellidos leí bol apellido bien vamos a ver que esté correctamente estoy aquí también tenemos que igualar porque eso está con la misma la misma posición no está en la primera lógicamente es la de la de cero la fila 1 la fila 0 columna 1 el siguiente tener que ser la y la 1 el siguiente sería la fila 2 no ni en la misma columna 0 porque está abajo justo del aire Entonces así estarían ordenados, ¿no?
Esta sería la columna 0, esta sería la columna 0 y la fila 0. Esta sería la columna 0, la fila 1, la columna 0, la fila 2. columna 1 fila 0 columna 1 y la 1 columna 1 fila 2 esto es y eso se cumple pues justamente aquí no mira 2 0 igual y 2 y 1 bien, entonces hasta ahí super super sencilla verdad ahora se ponen las cosas un poco interesantes porque tenemos que crear el desplegable para elegir el sexo para eso vamos a crear una etiqueta, la etiqueta si va a ser la misma esta de aquí así que la vamos a copiar esta de apellidos eso sí nos va a ser igual solamente que va a ser como sexo y lo único que vamos a cambiar es el la fila no que ver más abajo perfecto y se va a llamar lógicamente al label sexo el resto va a estar tal cual va a estar justamente debajo de lo que es apellidos no lo que es apellidos bien ahora necesitamos crear una variable que se va a dar select selecte opción si le vamos a poner el nombre o solamente seleccionar o selección le podemos selección para que seamos comprensible selección sexo va a ser igual a teca de nuestra librería tec inter string bar string perfecto ahora vamos a crear una variable que se marcó porque es un combo box punto titica y es justamente este típica y que de dónde sacó este típica y el ticket ya que arriba verla acá como te decía eso era son elementos importantes que nos van a servir ya las estamos empezando a utilizar como punto típica y punto combo box y aquí si vamos a ponerle pues los elementos que vamos a requerir vamos a crear este combo box primero dónde en el de los bots lo tengo que ver ahora qué valores vas a utilizar a cambio me está indicando qué valores son bien entonces solamente dos sexos no como si fuera un array masculino como femenino femenino bien entonces hasta ahí súper claro no luego en la variable la variable o el texto de la variable que aquí yo le tengo que incorporar este combo esto porque lo que yo necesito de ahí es que sea que esté guardado como variable de una cadena de texto y aquí ya le he creado, así que le voy a poner eso de ahí a ahí, con eso no me va a salir ningún tipo de error, le estoy asignando, le estoy diciendo que la variable que se va a utilizar van a ser textos, a pesar de que sea un array, pues va a ser texto, ahora yo le voy a decir el lugar en mi grilla, que lugar va a ocupar, para eso ya sabes, combo grid, y aquí, pero vendría a ser la tercera porque está debajo y la columna vendría a ser la primera columna porque es al lado de mi etiqueta sexo y ahora por defecto bueno hasta y lo ejecutamos Y ya tenemos esto de aquí. Y nos funciona como masculino y femenino. ¿Ves?
Mira. Ya nos funciona como masculino y femenino. Pero por defecto está en blanco.
Así que por defecto le vamos a decir que está en masculino. ¿Cómo hacemos eso? Vamos a decirle que la selección sexo.set, que esté como por defecto el sexo masculino.
Guardo, control S, ejecuto y como puedes ver pues ya está por defecto el sexo masculino. Es súper súper claro, ¿verdad? Ahora yo lo que necesito es crear mis botones de guardar, modificar y eliminar.
y para crear mis botones pues aquí vamos a crear los botones, botón donde vamos a crear, ya sabemos que es en el grid box, que texto va a tener el botón, el primer botón va a decir guardar, perfecto, luego las dimensiones va a ser de 10, luego vamos a dejar ahí el de comando porque todavía no lo vamos a utilizar, bien, ahora le vamos a decir su ubicación en nuestra grilla, Va a ser en la fila 4, porque está debajo, justo debajo del sexo. Row 4. Pero va a estar también en la misma alineación que va a ser en la columna 0. Porque vamos a poner el botón guardar al lado del botón modificar al lado del botón eliminar. Entonces el botón guardar está en la columna 0. El botón modificar está en la columna 1. El botón eliminar está en la columna 2. Bien, ya está.
ahora esto vamos a replicarlo dos veces uno y dos ya no se guarda si no va a ser modificar modificar el otro va a ser eliminar eliminar y aquí lo único que vamos a variar va a ser este elemento no como te decía el primero está en la columna 0 el segundo la columna 1 y el tercero en la columna 2 guardamos ejecutamos y ya tenemos correctamente alineados nuestros botones no con una 0 columna 1 columna 2 y ya tenemos ahí nuestra interfaz que no está quedando está quedando un poco decente no poco distante bien súper súper claro bien hasta ahí tenemos la mitad de la interfaz hecha ahora nos falta la otra mitad la otra mitad se va a ser un poquito más compleja pero nada del otro mundo vamos a ejecutar y en la otra mitad aquí te vamos a señalar que va a tener este mismo grupo box va a haber uno aquí que va a tener lógicamente aquí su título un título total o lista de del personal activa decir lista el personal y aquí va a estar pues todos los elementos no van a estar sus cabeceras sus cabeceras aquí de todo de los registros que vamos a abordar y aquí van a estar los registros aquí esa vendría a ser la otra mitad de la interfaz que tenemos que crear ok bien entonces vamos a la obra cerramos esto y vamos a continuar creando nuestra poderosa interfaz ahora vamos a reutilizar nuestra variable nuestra variable de group box pero vamos a crear una nueva otro nuevo group box que está al lado lógicamente nuevamente va a ser un label frame no tal cual como lo hemos hecho en un inicio label frame que elementos ya sabes que me va a pedir en de qué interfaz le decimos que es de base porque base es la variable que hace referencia a mi formulario en general que la va a crear ahí que va a tener un texto, una cabecera, que como ya hemos visto se va a llamar lista del personal o total de personal, tú puedes poner el que tú quieras, luego unos márgenes para X, 5 y luego otro margen para Y de 5 también, luego una comita para, listo, no te olvides de esa comita, ojo, de la comita, bien, luego vamos a decirle que este group box, vamos a ubicarla en nuestra grilla El otro Groot Box va a estar en la fila 0 también porque va a estar a la misma línea del anterior Groot Box del izquierdo, solo que va a estar a la derecha. Entonces está en la misma línea, en la misma fila, pero no está en la misma columna. El otro estaba en la columna 0. Este va a estar en la columna 1, o sea, va a estar a su lado, al lado derecho.
Nada más. Acá PatX 5 y PatY 5. Perfecto, ¿ves? Entonces, mira, este Groot Box está en el round 0. columna 1 pero este group box el de la izquierda está en la y la 0 y en la columna 0 entonces éste solamente va a estar en la columna de al lado en la columna 1 al lado derecho perfecto no ahora lo que nosotros vamos a necesitar es que vamos a tener que crear un trivió así que vamos a comentar aquí crear un review que este es el control que nos va a permitir pues crear esta tablita está esta grilla donde podemos a nosotros poder mostrar nuestros registros bien y vamos a primero configurar las columnas ok configurar configurar las columnas bien configurar las columnas entonces vamos a que una variable que se llama tri de árbol y ticay punto review que es el control que nos va a llenar que nos va a permitir pues crear esta grilla ahora como elementos como parámetros me decir dónde vas a crear esta grilla le digo en el grupo pero en el de la derecha verdad ahora las columnas que elementos van a tener estas columnas de las cabeceras Primero el ID, porque voy a abordar el ID. Luego los nombres, voy a abordar los nombres.
Quiero que me muestre los nombres. Luego los apellidos. Y luego finalmente el sexo.
Hasta ahí solamente le estoy incorporando los parámetros que me está exigiendo. Luego quiero que estas cabeceras sean visibles. Las voy a volver a asignar, pero aquí de momento quiero que sean visibles. Show que me muestre las cabeceras que vendrían a ser los headings. Y luego quiero que tenga una altura solamente de 5. Perfecto, su comita al final.
Porque es tipo tupla, ¿no? Tipo tupla. Bien, hasta ahí, súper claro.
Ahora, debajo de aquí es donde yo voy a decirle, realmente les voy a asignar los valores a las columnas como tal. A las cabeceras y el contenido. 3.2.column. Perfecto.
Y aquí tengo que decirle que esta va a ser la columna número 1. como ser la número uno le tengo que poner aquí número uno espacio número uno como la alineación que va a ser ancho que va a ser centro perfecto es la columna 1 ahora en esa misma en mi misma tablita nunca ponerle sus cabeceras sus cabeceras también esta va a ser lógicamente la cabecera número uno número uno y su texto de la cabecera va a ser como haití perfecto ejecutó y no me muestra nada porque todavía no le ha asignado pero estoy realizando eso todavía ahí porque no me muestra nada mira vamos a hacer que nos muestre para poder visualizar que esto esté corriendo correctamente .pack y listo este 3.0 para vendría a ser es algo bastante similar al base punto mail loop solamente que esto nos va a permitir de que funcione correctamente y que nos muestre pues el trivio vamos a ejecutar y efectivamente nos muestra solamente con una etiqueta mire la verdad pero ya ya han sido creadas las demás cabeceras que son nombres apellidos y sexo pero no le estoy poniendo su texto el texto tengo que ponerlo a tal cual como le he puesto aquí para la columna 2 3 y 4 eso es lo que me estaría faltando, ¿verdad? entonces voy a copiar esto y voy a pegar aquí para nombres, apellidos y sexo y lo único que voy a cambiar va a ser la numeración 2, 2 3, 3 4 y 4 y aquí este ya no va a ser ID este va a ser nombres este va a ser apellidos Y este va a ser sexo. No tengas miedo de copiar porque si funciona, si ya funciona, pues lo puedes reutilizar.
Ejecutamos y ya está correctamente mostrándonos nuestras cabeceras. ID, nombres, apellidos y sexo. Para poder realizar nuestro CRUD.
Entonces, sin más que decirte, pues hasta ahí ya tenemos nuestra interfaz terminada del CRUD de Python con MySQL. Ahora lo que vamos a hacer es que vamos a conectarnos a nuestra base de datos de este Python. Bien, y para eso vamos a necesitar primero crear un nuevo archivo Python aquí.
Bien, vamos a hacerle clic en esta parte que dice New File o New File y vamos a escribir la palabra conexión.py. Presionamos Enter y ya tenemos dos archivos. este archivo de nuestra interfaz y este archivo donde vamos a realizar la conexión a nuestra base de datos y para realizar la conexión a nuestra base de datos pues vamos a necesitar ir a nuestra terminal instalando el conector de python ok no te olvides y para realizar esa instalación lo que tenemos que hacer es escribir pip vamos a parar la ejecución de nuestra interfaz que tenemos aquí Y ahora sí, vamos a escribir en nuestro terminal pip install mysql-connector, o conector, porque este es nuestro conector, guión Python.
Esto de aquí. Si no hacemos esto, no vamos a poder utilizar el conector. pip install mysql-connector-python.
Presionamos Enter. Esperamos unos segunditos. y nos dice que ya en mi caso yo tengo esta versión y hay una versión más reciente en tu caso solamente se va a descargar y va a estar todo ok entonces hasta ahí ya tenemos descargado nuestro conector bien ahora que tenemos instalado nuestro conector pues ya podemos dar uso a todo tipo de conexiones a nuestro MySQL bien y para eso vamos a no solamente es suficiente descargar el conector si no tenemos que importarlo ya sabes cómo importarlo verdad import mysql.connector de esa forma al igual que el techinter pues estamos importando la librería mysql.connector porque ya lo hemos instalado anteriormente con el comando aquí vamos a ponerlo aquí vamos a poner el comando que hemos utilizado verdad que es pip install mysql-connector este es el comando que hemos utilizado para descargar el conector y aquí debajo lo que estamos realizando es que estamos importando esa librería que acabamos de descargar Ahora vamos a necesitar nuestra clase, crear una clase, que es animar C de clase y conexión.
Dos puntos, perfecto. y ahora lo que vamos a hacer aquí es que vamos a crear una función llamada conexión base de datos los puntitos y ya tenemos ahí y también tenemos que trabajar con su poderoso try catch o en este caso try except para el manejo de excepciones y que si es que nos sale un error pues en la aplicación no se detenga sino que nos muestre qué errores try dos puntos y ya más o aquí debajo el excepto excepto pero este excepto es un poquito especial porque este excepto tiene que ser que nos muestre el error de MySQL porque usualmente en esta clase me va a botar errores de tipo conexión con MySQL entonces tengo que decirles quiero que me bote los errores de MySQL connector.error que error es ese? haz error para que lo guardes en esta variable y listo ahora que me imprimas por consola ese error, error al conectarte a la base de datos a la base de datos, bien, datos y el error va a ser el siguiente punto format y mi variable error que es el de aquí arriba perfecto, hasta ahí súper súper claro Ahora vamos a crear una variable que se llama conexión.mysql.connector.
Vamos a dar uso a mi variable conexión, pero voy a hacer uso de mi librería conector. Bien, conector.connect, que me conecte. Bien, ahora las credenciales de acceso. User, va a ser igual a tal, todavía no le voy a poner. Luego el password.
password va a ser igual a tal todavía no le voy a poner coma, porque todavía no le voy a poner, porque te voy a explicar cómo es que nosotros vamos a tener acceso a eso, el hots o el servidor, que va a ser igual a tanto que todavía tampoco le voy a poner, porque te tengo que explicar, luego database, el nombre de la base de datos, que tampoco le voy a poner todavía porque no he creado todavía la base de datos, recién le vamos a crear ahora, bien, y luego el puerto o el port, que tampoco le voy a poner, pero estas son las credenciales que yo voy a necesitar, ¿cuál es? usuario con tres servidor nombre la base de datos y el puerto y franquillo de dónde voy a sacar esta información mira sencillo vamos a abrir nuestro maíz sql word bench aquí si quieres puedes abrir también tú tu php maya no hay problema entonces mira cuando tú has instalado tu maíz sql y tu maíz sql word bench por defecto en tu instalación has puesto un usuario y una contraseña verdad ese usuario y esa contraseña es la que nos va a servir para conectarnos y por defecto te va a mandar este número de puerto que está aquí que es el 3306 entonces ya tengo casi todas las credenciales Y el localhost, que vendría desde el servidor local, también tiene una dirección de IP específica, que es la A ver, a ver, ¿eso es verdad, Frank? Pues sí.
Entonces tú le vas a hacer clic aquí a tu conexión. Y mira lo que te va a aparecer aquí, user, en mi caso, cuando yo he instalado mi MySQL, mi usuario yo le puse que se llame root, mi contraseña en mi caso yo le puse en la instalación de mi MySQL que mi contraseña también sea root. En tu caso puede ser distinto o quizá tú le hayas puesto lo mismo.
Bien, entonces voy a ingresar aquí con mi usuario root y mi contraseña root. Root, presiono enter y listo. Ok, ya tengo aquí. Ahora, como ya tengo ahí, voy a regresar aquí para ver esas credenciales que me faltan. donde frank aquí donde está la casita fuera un día que la casita y voy a hacerle clic aquí en esa conexión que ingresa de sexta verdad porque el hecho que elija aquí he puesto mis credenciales voy a hacerle clic en el que dice configuración aquí Y aquí me va a mostrar la información restante que me falta.
El hotsname, que es lo mismo que hots. que es igual a localhots. Pero nosotros le vamos a poner el número de la IP.
Tú puedes conectarte a otra IP. Quizás tu base de datos esté en otro lugar. Tú solo le cambias el hotsname, el usuario de la contraseña y el puerto correspondiente.
Y normal, se conecta. Entonces ya tengo el hotsname, que es 127.0.1. Tengo el username, que es root. Instalación, mi contraseña en mi caso también es root. También.
También tengo mi puerto que es el 3306. Perfecto. Voy a regresar aquí. Y voy a crear mi base de datos.
Para crear mi base de datos. Pues voy a realmente crear mi base de datos. Con solamente mis poderosos scripts.
Aquí. Create database. Database.
En este caso se va a llamar. clientes no usuarios creo que lo pusimos clientes a ver si clientes no clientes debe así se va a llamar me hacen vivas de datos clientes de perfecto ahora lo voy a crear y ya está creado como sé que lo he creado porque lo ejecutado me dice create a través correcto ahí está mi check de hecho clic ahí Mira aquí. Luego lo he ejecutado en el rayito, ¿no?
En el rayito que está aquí. También puse a utilizar este rayito que ejecuta lo que está resaltado, ¿no? Bien. Y ya está. Ahora, oye, Frank, y no me aparece mi base de datos.
Acá está la lista de bases de datos. Le haces clic en el actualizar aquí. Las flechitas. Y ya está, mira.
Y ya apareció la base de datos que acabamos de crear. Bien. Hasta ahí no vamos a tocar nada más en MySQL. Lo minimizamos. Y ya tenemos aquí las credenciales que nos falta en nuestro Python.
Usuario. Usuario era root con el que ingresamos SQL. Mi contraseña también era root porque es lo que yo le puse.
Si tú le pusiste otra cosa, pues le pones. En hots, ¿cuál era el hots name? ¿Cómo se llama mi base de datos?
aquí clientes de B, lo selecciono, lo copio, control C, lo pego aquí, y mi puerto era el 3306, ¿verdad? Por defecto, perfecto, entonces ya tengo todas las credenciales completamente correctas. Ahora que tengo todas las credenciales completamente correctas, yo voy a necesitar que si es que estoy realizando la conexión correctamente, que me muestre un mensaje que me diga conexión correcta, ¿no? Conexión correcta.
Y no solamente eso, sino que yo necesito que me retorne mi variable conexión. Esta variable conexión es de tipo conexión de MySQL, es de tipo conexión. Entonces yo la necesito, yo necesito que esta función siempre me devuelva una variable de tipo conexión.
¿Por qué? Porque cuando yo voy a ingresar datos, voy a modificar datos, voy a eliminar datos, voy a reutilizar esta función de esta clase y de este archivo. Voy a reutilizar la función llamada conexión base datos para poder abrir conexión, cerrar conexión, cuando yo realice mis consultas. Entonces, no me sirve de nada poner o abrir cada conexión para insertar, guardar, programarlo ahí sino en un archivo aparte por eso mi archivo aparte se llama conexión y dentro de eso hay una clase llamada C conexión y dentro de eso hay una función llamada conexión base de datos donde solamente en este archivo conexión.py voy a tener mi conexión a base de datos no voy a tener nada más para poderla reutilizar y que mi código sea un poquito más eficiente bien y Y si es que sale un error, también que me devuelva la conexión, ¿no? De todas formas, necesito esa conexión.
Bien, perfecto. Ahora que ya tengo esto, pues vamos a realizar la prueba. Ok, vamos a realizar la prueba. ¿Cómo sé que va a funcionar la prueba? Aquí en mi clase de conexión, ahora vamos a llamar a mi variable conexión de b, que es mi función, ¿no?
vamos a llamarla aquí de aquí afuera la llamamos tenemos un poquito espacio a ver dónde está esto tenemos que ponerle más al borde más al borde para que se vea mejor y no tengamos ningún tipo de inconveniente bien por el campo y no tenemos que trabajar bastante bien lo que son los espacios bien y a ver a qué altura está aquí no vamos a llamar ya está y aquí tenemos ya vamos a llamar en python como se ejecute de forma lineal pues aquí voy a llamar a mi función conexión de voy a ejecutar derecho y lo que me sale es lo siguiente mira ejecutado y en consola me ha salido conexión correcta, o sea que se ha conectado correctamente a mi base de datos vamos a cambiarle el nombre a la base de datos voy a ponerle 2 y me tendría que salir un error, ejecuto y me sale un error, no, aquí dice que no existe que error, que error, entonces voy a regresar, voy a borrar este 2 porque me hace datos llamadas clientes db vuelvo a ejecutar y me sale que conexión correcta Entonces hasta ahí ya tengo súper claro de que está funcionando de forma normal, que ya me ha realizado la conexión de mi Python, mi aplicación Python con MySQL o mi base de datos MySQL. Bien, ahora lo que vamos a hacer es que vamos a ingresar los datos de Python a nuestra base de datos en MySQL. Correcto, y para eso pues tenemos que nuevamente ir aquí. y vamos a crear un nuevo archivo que se va a llamar clientes clientes.py enter y ya tenemos aquí nuestro archivito.py aquí está, bien, aquí es donde nosotros vamos a primero vamos a llamar de nuestro archivo conexión nuestra clase c conexión, nuestra función conexión base de datos vamos a llamar esto de aquí que te decía que tenemos que reutilizarlo para todas nuestras consultas lo voy a llamar aquí y luego de eso en nuestra interfaz vamos a llamar a clientes vamos a incorporar los valores.
Ese es el proceso que vamos a seguir. Entonces, tenemos aquí nuestro archivito clientes.py. Como te decía, yo necesito utilizar esta conexión que ya sé que funciona.
Que está en mi archivo C conexión, que está en mi clase C conexión, que es la función conexión base de datos. Entonces, al igual como yo he realizado la importación de elementos en Python, de esa misma forma yo realizo la importación o el uso de los archivos de mi proyecto. Y lo que voy a hacer es eso. Voy a escribir from.
Conexión. Import. Todo.
O sea, asterisco. Aquí lo que yo acabo de hacer es que le estoy diciendo que desde mi archivo clientes voy a poder utilizar todo lo que está en el archivo conexión, todo esto. Pero yo necesito específicamente solamente esto. Por eso sé que me va a funcionar. Acabo de importar clientes.
Voy a llamar lo que yo quiera de mi archivo conexión desde mi archivo clientes. Bien, ahora como en los anteriores archivos, pues voy a crear una clase que se va a llamar C clientes. bien perfecto súper claro luego mí mi función que se va a llamar ingresar clientes de ingresar clientes no porque es lo que vamos a hacer y qué valores yo voy a ingresar qué parámetros yo voy a ingresar de los clientes pues aquí regresamos a nuestra interfaz como sabemos vamos a ingresar nombres apellidos y sexo porque no ha ido Porque ID va a ser autoincrementable.
Entonces, para antes de que yo realice esto de aquí y sepa qué parámetros voy a utilizar, vamos a crear nuestra tableta y nuestro MySQL y vamos a ingresar un registro. Bien, entonces vamos a nuestro poderoso MySQL aquí. Para que usemos la base de datos que hemos creado, porque ahorita no está ninguno en uso, se tiene que poner de color negrito. Vamos a escribir la palabra use de usar el nombre. de la base de datos, punto y coma aquí lo selecciono, lo ejecuto y ya está como podemos ver aquí se ha pintado de negrito, eso quiere decir que estamos utilizando esta base de datos perfecto, ahora lo que nosotros tenemos que hacer es crear la tablita que tiene que coincidir con los campos que nosotros vamos a abordar Crate table se va a llamar usuarios.
Ya sabemos que tenemos estos cambios de clientes y usuarios. Entonces le podemos poner usuarios. No hay problema, usuarios. Usuarios.
Y va a tener los parámetros. El primer parámetro es el ID. El segundo era nombres, el siguiente apellidos y el siguiente era sexo, ¿verdad?
El ID va a ser de tipo entero. Va a ser autoincrementable. Ok.
Primary key. No, no, perfecto. El siguiente va a ser de nombres, que va a ser un bar chart de 50, ¿no? De nombres. Bien, el siguiente voy a copiar, va a ser el de apellidos y el siguiente va a ser el de sexo.
Aquí, apellidos, apellidos y el otro va a ser el de sexo. perfecto eso va a ser un poquito más corto de 20 ya está entonces aquí ya tengo mi tablita voy a crearla se le seleccionó ejecutó verificó que aquí la parte de abajo me confirme que se ha creado correctamente pues sí ahora actualizó aquí nuevamente bueno dice tables usuarios columns y me sale pues la tabla que acabo yo de crear con sus dice tables usuarios o se llama mi tabla las columnas hay de nombres apellidos y sexo y vamos llenar con un registro y vamos a llenar con un registro bien entonces para ello llenar simple sencillamente voy a hacer un insert quinto usuarios va a los valores el primer valor va a ser nulo el segundo va a ser mi nombre tú puedes poner mi nombre o tú puedes poner el tuyo el siguiente mi apellido el siguiente el sexo no masculino bien entonces punto y coma al final ya está Perfecto, insert into aquí nuestros punticoma para que esté bien. Entonces, ¿por qué el primer parámetro es nulo? Te explico rápidamente. Porque el primer parámetro nulo es id y el id es autoincrementable.
Se va a autoincrementar de uno en uno de forma automática. Uno, dos, tres, cuatro. Yo no necesito incorporarlo, pero por eso es que lo estoy poniendo aquí. los siguientes parámetros Frank es para nombres apellidos Valencia y el sexo masculino tú puedes poner tus datos y ahora yo lo voy a ingresar selecciono y lo ejecuto me dice que sí que se ha ejecutado pero yo necesito ver le hago mi poderoso select pero usuarios perfecto ejecuto y ya está aquí está mis registros de nombre es apellido sexo y he insertado un registro en mi base de datos entonces tal cual como insertado aquí tengo que hacerlo en mi país cuántos parámetros yo estoy requiriendo nombres apellidos y sexo estos son los parámetros que yo tengo que digitar desde el formulario de mi python de mi techinter tengo que digitarlo desde el teclado y se tiene que guardar en esta base de datos entonces cuantos parámetros son 1, 2 y 3 ahora si ya está mi base de datos super lista para poder realizar esto de aquí entonces aquí cuáles yo voy a necesitar nombres no apellidos y sexo esos son los parámetros super claro no no nos olvidamos de nuestro poderoso track y luego nuestro excepto nuestro excepto que va a ser de tipo mysql no del error punto conector punto error haz error, dos puntos, que como sabes que esto nos va a mostrar el error, si es que llegara a pasar, error de ingreso de datos, acá, de datos, y en qué parámetro que nos muestren ese parámetro, punto format de error, que es mi variable, aquí está, perfecto, donde voy a programar todo, en my try, ahora, yo voy a crear una variable, que se llama con e, que va a ser igual a a esta función que yo voy a llamar de mi archivo de conexión para tener acceso a mi conexión primero tengo que tener acceso a mi clase y antes tengo que tener acceso a mi archivo pero en mi archivo yo ya tengo acceso con esto de aquí entonces lo que yo tengo que hacer señalar es a la clase y dentro de esa clase a la función perfecto entonces esta variable que se llama con él va a ser igual a la clase de conexión punto conexión base de datos que es el nombre de la función verdad perfecto mira y mira conexión punto conexión base de datos conexión se conexión a mí estoy haciendo llamado a mi función llamada conexión base datos que está en otro archivo pero estoy llamando aquí porque estoy realizando la importación del archivo aquí y aquí estoy sino referencia a esto de aquí perfecto hasta ahí de esa misma forma yo voy a hacer para modificar y eliminar, por eso era importante que yo tenga mi conexión en un lugar diferente donde esté solo para poderlo manejar y poderlo reutilizar y solamente llamarlo y llamarlo y llamarlo bien, entonces hasta ahí claro, pero voy a crear una variable que me va a ayudar, que es la variable cursor cursor va a ser igual a mi conexión con a mí con el punto cursor porque porque esto es importante porque esta variable lo que va a hacer es que va a ejecutar esta conexión que va a ejecutar esta conexión que yo ya le tengo totalmente sé que está funcionando que por eso ese cursor me va a ayudar más a él para agrupar no solamente la conexión sino va a agrupar la conexión y la consulta que voy a realizar que en este caso va a ser el ingreso de datos bien entonces ahora voy a crear una variable que se me abri ese cuello donde voy a pegar mi consulta de mi malla sql ahora como yo he hecho acá ya un ingreso puedo reutilizarlo no puedo copiar esto control c lo voy a pegar aquí pero los parámetros cuáles tienen que ser los parámetros tienen que ser este este de apellido sin que ser este este tiene que ser este y como es que yo le voy a decir que ese tiene que ser ese primero voy a decirle que estos son parámetros y para decirle que son parámetros es el signo de porcentaje y una s esto le indica capa hito de que se va a hacer un parámetro este otro parámetro y este otro parámetro y hasta entonces hasta ahorita yo no le estoy diciendo todavía que usted esté ni este ni este no le estoy diciendo todavía nada solamente estoy diciendo aquí en esta en esta variable que aquí van a haber tres parámetros recuerda que los parámetros tiene que conseguir el orden tal cual como está ok tal cual como está no te olvides bien ahora para insertar estos valores estos valores estos valores aquí la referencia de aquí debajo ojo miran esto de aquí tiene que ser mi mi mi entra y de mi control de mi interfaz tiene que ser el de nombres tienen que ser es el de apellidos tienen que ser es el de sexo tiene que ser es verdad entonces hasta ahí es importante que seas meticulos en eso ahora vamos a poner aquí un poquito de teoría para para que me entiendas lo que voy a hacer a continuación lo va a poner la variable valores que variable valores lo voy a poner en un momento porque en esa variable yo voy a tener que agrupar todos estos elementos de acá arriba estos parámetros los voy a tener que agrupar mira pero aquí ya te lo voy poniendo la variable valores valores tiene que ser una tupla como tú sabes una tupla en python es un array que no se puede modificar en términos sencillos así de una forma muy resumida no un array tú puedes modificarlo pero una tupla no bien como mínimo como mínima expresión mínima expresión es valor y una comida cuando tú tienes un array en python o en cualquier lenguaje tu mínima expresión es sin esta coma verdad solamente un valor y lo toma como si fuera normal Si nosotros hacemos eso en Python, sí va a funcionar, pero no va a funcionar para el ingreso que nosotros necesitamos, porque nos está obligando, nos obliga Python a que este conjunto de datos sea una tupla.
¿Y cómo la va a identificar que sea o que no sea una tupla? Con esta comita a pesar de que no sea una tupla. pesar que solamente hay un elemento 6 y 2 elementos normales en números pero si solamente hay uno esa comita va a decirle que es una tupla bien por lo es que hay un elemento que perfecto la coma la coma hace que sea una tupla y como te decía las tuplas son listas inmutables inmutables eso quiere decir que no se puede modificar como te decía, eso quiere decir que no se puede modificar, a diferencia de una lista convencional entonces ahora que ya tengo claro, voy a crear esa variable que yo te decía que se llamaba valores valores va a ser igual a la tupla que yo voy a convertir en una tupla todo esto de aquí o copio y lo pego aquí y ya tengo mi tupla perfecto ahora voy a reutilizar mi variable cursor que te decía que era que iba a unir justamente todos estos elementos cursor va a ser va a ejecutar execute y aquí va a unir mi consulta con mí va a unir mi consulta, que esta consulta donde recién va a hacer referencia estos parámetros con estos parámetros los va a unir y les va a decir en este parámetro es nombres, en este parámetro es apellidos, en este parámetro es sexo, entonces aquí le voy a decir primero SQL y luego valores, entonces mira cursor lo que va a ejecutar es el agrupamiento de la consulta con valores, la unión de la consulta y sus parámetros con los valores de arriba, esto tiene que coincidir con esto, nombres, apellido y sexo, ok, tiene que tener el mismo orden, ten cuidado, tiene que coincidir, ok, tal cual en el mismo orden, perfecto, y eso es lo que va a hacer el cursor, va a ejecutar eso, luego va a realizar un commit, este commit es bastante similar a lo que se trabaja en con git, pero la diferencia es que el commit es bastante similar a lo que se trabaja en con git, diferencia es que es en una base de datos así que va a mandar este commit o esta modificación directamente a producción de alguna forma, ok, porque hay otro, cuando trabajas en MySQL, otro tipo también de gestores pues existe el commit, el rollback cosas bastante interesantes para poder manejar y mejor las modificaciones que nosotros hacemos en una base de datos, en este caso solamente lo estoy utilizando para que se ejecute y si es que es eso llega a pasar pues que me muestre un mensajito y que me diga justamente eso no cursor punto rom con coma registro ingresado que me diga que es ingresado registro ingresado perfecto solamente esto solamente es un mensaje luego de eso que me cierra la conexión punto club perfecto ya me cerró la conexión perfecto no mira ya está ahora que lo que yo necesito aquí el error y nada más ya está esto ya debería estar funcionando pero no me sirve que esté aquí eso yo necesito implementarlo donde en mi interfaz así que yo tengo que ir a mi interfaz aquí aquí a mi interfaz y ya estoy en mi interfaz y aquí voy a tener que hacer bastantes modificaciones para que me funcione bien ok voy a necesitar que hacer bastante esta información primero voy a importar yo voy a utilizar esta esta función de la clase de clientes de la clase de clientes del archivo clientes así que necesito importarlo tal cual como lo importar la conexión voy a importar lo que es clientes la conexión también la voy a utilizar así que y si no no no haber problemas entonces voy a utilizarlo voy a importar mi archivo conexión y clientes para que pueda utilizar esto en mi interfaz pero en clientes import asterisco Lo mismo voy a hacer para importar lo que es la conexión, porque ya estoy empezando a enlazar mi interfaz con toda mi conexión y con mi función de ingreso de datos. Aquí estoy empezando a utilizar, a llamar todo lo que yo necesito realmente. Entonces ahora lo que yo voy a necesitar es algo importantísimo.
¿Por qué importantísimo? Aquí yo voy a necesitar variables globales para los elementos de mi formulario. para mí para mí se entra y de aquí para esto sea que voy a ejecutar yo necesito estos estas cajitas los entra y esto esto esto esto sean variables globales dentro de python porque los voy a reutilizar las voy a utilizar para ingresar voy a utilizar para modificar las utilizar para eliminar como los voy a utilizar para varias cosas entonces las vuelvo globales y solamente las voy a llamar y las voy a utilizar por eso, porque ahorita esto está de forma local, mire, está dentro del de formulario y no me sirve, no me sirve que estén ahí adentro, así que yo necesito que estas sean globales bien, ahora para que sean globales, sencillo, no global, global y el nombre del textbox id aquí textbox id lo voy a volver global y Luego de eso, le voy a decir que, al igual como en otros lenguajes o en Python, pues necesitamos inicializar las variables.
Si no, nos va a salir un error. Pero inicialmente, acá lo voy a inicializar como nono, o sea, sin nada. Entonces, ¿qué es lo que va a suceder?
Esta variable es global, no tiene nada, y su valor recién se está ingresando aquí adentro. Cuando yo llamé a mí... Función formulario. Ahí recién se va a inicializar o va a tener un valor. Porque aquí ya ha sido inicializado.
Ok. Entonces ahora lo mismo voy a hacer. Ya tengo el textbox.
Todos los datos que iba a utilizar. El de nombres. El de apellidos.
Ahora el textbox. Tengo aquí el de ID. Aquí era textbox ID. aquí debía haber cambio de nombres no tengo tengo que ponerle de xbox nombres aquí de xbox nombres no aquí vamos a corregir textbox nombres y este sería el textbox apellidos no vamos a corregir apellidos apellidos bien ahora aquí vamos a corregir el de combo box selección este si está bien pues ahora el textbox nombres tengo que hacerlo global global el de apellidos donde el de apellidos textbox también tengo que hacerlo global porque lo voy a reutilizar como te decía hace un momento que más bien estar el group box y el y el y el tree o el árbol no así que voy a necesitar recordar los espacios espacios son importantes bien acá tengo el de apellidos me faltaría el de group box donde está mi group box también lo tengo que hacer global global y luego el de mi tree o de mi arbolito que es este de aquí este también tiene que ser global ok este también tiene que ser que global global perfecto ya tengo todas mis variables globales correctamente correctamente ya tengo todas mis variables globales, ahora, ¿cómo yo las voy a utilizar?
aquí, donde yo voy a ponerle un nuevo valor a mis variables globales, no solo basta con llamarlas, tengo que decirles cuáles son, así funciona en Python, y aquí yo tengo que decirle cuáles variables yo voy a utilizar, así que voy a decirle que voy a utilizar esta variable global, esta también de textbox nombres, luego el de textbox apellidos, luego el de combo el de combo va a ser necesario claro me faltaría el de combo aquí no el de combo el de apellidos acá me faltaría la variable global de combo listo aquí lo voy a poner que es el del mi combo del sexo aquí como esto también tiene que ser variable global perfecto ya tengo el de como cuáles tengo textos hay de sus nombres textos apellidos combo group box y tree para cosma cual más voy a utilizar el de combo aquí en verdad el de cómo haber combo aquí como como cuál más voy a utilizar ahí ya tengo el de combo el de base el de base me falta me falta el de base el de base aquí, donde está el de base, este también tendría que ser una variable global, lo vamos a dejar abajo del combo, arriba tendría que estar el de base, no aquí arriba, el de base, lo vamos a pegar, y es base, que es el formulario general, este también tiene que ser una variable global. bien perfecto ya tenemos el de base ahora cuál más voy a utilizar el de combo luego utilizar el de base la variable base luego el de group box que está aquí estamos voy a utilizar luego voy a utilizar el de tri o de árbol no aquí perfecto los espacios no te olvides ya está entonces como voy a utilizar esos esos sus valores van a ser reemplazados porque inicialmente están como nada pero aquí mientras se ve ejecutando producir van a tomar sus valores pero es necesario que los tenga como globales si no no los voy a poder utilizar ok entonces hasta ahí ya súper claro ahora lo que nosotros vamos a necesitar o lo que yo voy a necesitar es crear aquí también una función que se va a llamar guardar registros y ese va a estar aquí debajo, esto acá vamos a dejarlo aquí con ese espacio formulario normal que me llame, pero aquí yo necesito llamar a mi función que se llame guardar registros, aquí es donde yo voy a llamar a esta función de la clase C clientes de mi archivo clientes que se llama ingresar clientes, aquí guardar registros que luego de eso aquí es donde yo voy a empezar a programar bien qué valores yo voy a guardar entonces también le tengo que decir las variables globales que voy a guardar en este caso son las de textbox nombres el textbox apellidos que son globales el combo que voy a guardar porque está el sexo y el group box porque ahí es donde están agrupados las variables eso es lo que yo voy a guardar y eso lo que yo voy a utilizar bien ahora no te olvides tu poderoso try nuestro poderoso try y aquí vamos a realizar lo que es verificar verificar si los widgets o sea que es esto de los widgets vendrían a ser los botoncitos y estos elementos de la interfaz estos llamados widgets están inicializados En Python es bastante duro al momento de ver que todo está inicializado, entonces tenemos que verificar también eso. Para eso necesitamos utilizar una condicional, le vamos a decir si es que el textbox nombre. está inicializado o no tiene nada, si está en no, inicialmente está en nada, entonces si es que es esto, no están inicializados, y si no están inicializados quiere decir que no están tomando los voladores aquí, pero eso vamos a realizar este pequeño filtro.
textbox apellidos o textos apellidos si es que están en nada no tienen nada o finalmente el combo no como está en nada entonces si todos esos elementos no tienen ningún valor que nos diga eso que los widgets que como te dije los widgets son estos elementos de las interfaces no están inicializados y que me retorne eso, ok, nada más ahora, si están inicializados, pues no van a trabajar de esa misma forma si están inicializados vamos a crear variables, que en este caso se va a llamar nombre esta variable, que es lo que va a abordar, va a ser el valor del textbox nombres ok,.get El valor que vamos a obtener de ahí va a estar en esta variable. ¿Y qué es esto de textbox nombres? Es justamente nuestro entry, ¿verdad? Lo que vamos a digitar en nuestra interfaz. Ahí lo vamos a guardar el de nombres.
Vamos a copiar para guardar el de apellidos y el de sexo. Aquí sería el de apellidos. Sería el de textbox apellidos.
Y el otro sería el de sexo. Que es el de combo, ¿no? En el combo está el sexo.
Ahí, combo. perfecto ya tengo ahí todo estoy súper ordenado mira estoy explicando súper ordenado que es súper ordenado espero que me estés entendiendo bien aquí estoy guardando los valores de esos controles ahora lo que voy a hacer lo que toca a continuación prácticamente ya tengo todo listo no ya tengo guardan variables lo que me faltaría sería llamar a mi función ingresar clientes que está aquí en archivo clientes eso lo que voy a hacer voy a llamar a ser clientes punto ingresar clientes porque así se llama esta función y los parámetros que me van a pedir cuáles son los parámetros nombres apellidos y sexo bien como te diste cuenta pues es la misma cantidad parámetros verdad nombres apellidos y sexo esa es mi función aquí y aquí tengo que llenar con esos parámetros también pero aquí ya los tengo en variables bien ordenadas entonces aquí nombres coma apellidos coma sexo y ya está un código bien ordenadito ves guardamos y ya está está súper claro ahora si es que llega a pasar esto si esto es correcto que me sale un mensaje box punto show info y es un mensaje pop no que no me va a mostrar ahí que me hiciera información coma los datos fueron guardados guardados un mensaje porque no me sale error esto de show info ni nada porque en un inicio hemos hecho esto sí o no hemos importado de la librería techinter en el mensaje box perfecto por eso es que aquí ya lo estoy recién lo estoy utilizando aquí perfecto y luego de eso no va a haber ningún tipo de problema y nos olvidamos tenemos que limpiar los campos luego de ingresar limpiamos los campos como les llevamos los campos cuales vamos a limpiar el textbox nombres punto delete desde el 0 hasta el final perfecto lo mismo pero para el textbox apellidos también vamos a borrarlos una vez que se ingresen los datos perfecto que nos estamos olvidando el excepto el except que tiene que estar a la visualidad de mi try a ver esto por ahí si está ahora si esta línea de mi except que va a ser uno normal no vale error error dos puntos y que me imprima justamente eso error al mostrar interfaz en este caso sería error al ingresar los datos al ingresar los datos y que en este parámetro me muestre el error que es format error perfecto hasta ahí debería de funcionar Guardamos y ya está. Ahora, no lo puedo ejecutar.
¿Por qué? Porque todo este llamado que estoy haciendo está en una función. Y esta función donde tengo que programarla en el botón guardar. Así que voy a mi botón guardar aquí. Y en mi botón guardar tengo que incorporarle un nuevo parámetro.
Aquí. Que se va a llamar command. qué comando va a utilizar en este caso va a ser mi función que se llama guardar registros copio el nombre y va a ejecutarse cuando yo le haga clic en ese botón el comando de guardar registros guardar registros acá me dice que no está definido pues porque en realidad si está definido no entonces si te sale este error lo que tenemos que ver son los márgenes de todo tenemos que ver los márgenes de de la clase no acá en qué nivel está en este caso probablemente me sale ese error no lo está detectando porque estos márgenes tenemos que corregirlos y eso es lo que tenemos que hacer y eso es lo que vamos a hacer, así que estas def las vamos a mandar a la esquina que las funciones a la esquina y también a la esquina y listo y esto tenemos a llamarlo ahí una vez que lo hemos alineado pues ya me registra, ¿por qué?
porque mira, como hemos puesto estas variables globales estas variables globales están dentro de la clase pero los formularios están a la misma línea que la clase principal, porque es aparte, por eso es que no nos detectaba, tienes que ser muy cuidadoso con lo que son los espacios en Python, ok, entonces ahora sí me está reconociendo la función, perfecto, y debería funcionar, a ver, vamos a ejecutar, Hasta ahí todo normal. Ahora vamos a llenar los campos correspondientes. Vamos a llenar los campos que deberían de llenarse, que son nombres, apellidos y sexo.
El primer registro hemos visto que es Frank, ¿verdad? Ahora le vamos a poner un nombre de una mujer, María González. González, y le vamos a poner femenino.
Femenino, ahí ves, mira, María González femenino y le vamos a hacer clic en guardar. A ver si guarda. guardar y me sale un mensaje me dice información los datos fueron guardados eso quiere decir que lo hemos hecho bien pero todavía no nos confiamos vamos a cerrar y vamos a ir a nuestro mysql aquí nuestro wordmatch aquí y vamos a hacer un select from ejecutamos y si efectivamente tal cual se ha ingresado a los datos mira el ID se ha autoincrementado en uno automáticamente luego María funciona González y de sexo femenino eso quiere decir que ya tenemos ya hemos hecho el ingreso de datos desde formularios de Kinter de Python con MySQL hasta ahí ya tenemos lo que es el ingreso de datos Bien, ahora lo que vamos a hacer es que vamos a mostrar estos datos de la tablita de nuestra base de datos, pero en nuestro formulario de Python utilizando Techinter. Así que eso es lo que vamos a hacer, vamos a realizar el mostrar.
Bien, y para eso pues ya sabemos que el mostrar prácticamente es este select from, ¿verdad? Y solo que tenemos que implementarlo aquí, es una fácil, ¿no? no es tan fácil vamos a ir a nuestra clase conexión de aquí necesitamos algo no no no modificamos nada porque vamos a reutilizar esto pero en clientes y así como hemos creado una función llamada ingresar clientes nosotros también vamos a crear una función que se llame mostrar y así que vamos a crear una función que se va a llamar mostrar clientes mira mostrar clientes clientes perfecto qué parámetros va vamos a requerir para mostrar ninguno es un selección simple y sencillo en aquí si teníamos que utilizar porque vamos a utilizar valores que vamos a ingresar desde payton hasta ahí se cuelga pero para mostrar no necesitamos nada entonces nuevamente aquí nuestro poderoso trae unos olvidados de nuestro trail y aquí vamos a crear una variable que se marcó tal cual mira esto de aquí vamos a copiar todo esto todo esto de ingresar vamos a copiarlo vamos a pegarlo aquí mira ya está lo vamos a reutilizar para hacerlos más sencillo Entonces, de aquí, lo único que vamos a variar, esto va a ser lo mismo, mira.
Aquí estoy creando una variable de tipo connect, que es una variable local. Cursor, tal cual. Lo único que voy a modificar va a ser este, que va a ser el select from.
Voy aquí, a mi MySQL, copio mi select from, que me sirve para mostrar todos los resultados. Lo pego aquí y ya tengo mi select from usuarios. Esto de aquí lo borro.
y aquí es lo que yo voy a utilizar no aquí ya voy a cambiar esto de aquí yo ya no voy a utilizar valores ni resultados sino aquí voy a crear una variable que se vea mi resultado el resultado va a ser igual a cursor punto fetch all para que me muestre todo perfecto y aquí lo único que voy a hacer en el cursor cuando debe ejecutar pues en realidad ya no se ve ejecutar no aquí podemos esto ya no sería tan necesario el curso directamente tendría que ejecutar aquí tendrá que ejecutar entonces aquí vamos a poner cursor va a ser igual a esa ejecución aquí directamente cursor punto ejecutar la consulta del cel es lo vamos a simplificar esto de aquí perfecto pero vamos a poner esto de aquí y ya está el fetch all luego mi resultado y luego que se ejecute bien luego el cómic no es el cómic creo que yo lo tengo aquí aquí está el cómic perfecto luego este de aquí registro ingresado no no va a ser necesario que se cierre la conexión sí y aquí es algo importante como es mostrar me tiene que devolver datos varios datos así que me tienes que devolver tú el resultado mi resultado, me tienes que devolver, sí o sí y nada más, y acá el error, error, demostrar datos, acá vamos a poner de mostrar datos Entonces, ¿qué es lo único que he hecho? Primero, he reutilizado todo lo que tenía que ingresar, no todo, pero gran parte, porque es lo mismo. Aquí he guardado la conexión en una variable, luego en ese cursor, luego le estoy diciendo que ejecute directamente ese cursor.
el select from que está en mi consulta aquí que el ejecute luego que en mi variable mi resultado me guarde todo eso es el conjunto de datos que voy a obtener y luego qué bueno que sé que a veces cambie la base de datos sí que cambio entre comillas que cierre la conexión pero que me devuelve el resultado que voy a obtener al realizar la consulta de todos los registros en la base de datos nada más hay algún parámetro aquí no ninguno bien entonces ahora qué más tengo que hacer nada sólo tengo que ir a mi país tomaría sql a mi interfaz a donde me hubiera aquí debajo verdad a la misma altura de mi variable de solo que voy a crear aquí una variable que ya no se va a llamar guardar registros no tendría que llamarse mostrar o no en realidad no y te explico por qué porque esto lo vamos a hacer directamente en nuestro trivió y para el modificar si vamos a utilizar para el otro también pero para el mostrarnos así que vamos a ir directamente en su trivió aquí está acá Estoy en mi función que se llama formulario. Ok, mira, luego de que yo he puesto las cabeceras, aquí es donde yo voy a trabajar directamente. Vamos a poner agregar los datos a la tabla. A la tabla porque solo es visualizar la información, ¿verdad? Y luego vamos a mostrar la tabla.
como en todos los lenguajes para mostrar necesitamos hacer un recorrido y para eso necesitamos bucles finitos en este caso for no un for for wrong y ahora voy a llamar a mi clase de clientes punto a mi función como se llama mostrar clientes aquí está mi función mostrar clientes y está y acabo de hacerle llamado que va a recorrer eso y luego que me inserte en mi tree que es mitad de mi grilla que la muestra y el resultado que yo voy a obtener en mi función mostrar clientes porque eso es lo que me devuelve me devuelve mi resultado que es el conjunto de datos que yo estoy consultando eso lo voy a meter en este tric lo tengo que meter en ese 3 entonces insertar en este tric insert eso pero de inicio a fin y sin espacios en coma va a luz igual a rom perfecto entonces las va a impulsar ahí lo está empezando a llenar perfecto perfecto perfecto ya está y ya está que nada más pues sí a ver vamos a ejecutar y ya está mira por eso ya están mis registros ya me muestra es correctamente por eso es importante que lo trabajes en orden y que sea entendible todos separaditos visto cada cosita tiene su función cada cosita tiene su función ok y solamente en la interfaz empezamos a llamar todo empezamos a llamar todo todo lo demás lo programamos afuera y en el terraso lo llamamos llamamos llamamos pues entonces esa forma ya tenemos esto de mostrar todavía nos falta un poco bastante para que nuestra aplicación sea un poquito más funcional más allá del modificar y el eliminar que también es una parte importante ok entonces es importante decirte eso y aquí también es importante de que nos falta algo que va a mejorar la interfaz hemos visto la experiencia de usuario porque hubo ingresó un nuevo registro mira nombre se va a llamar digamos ahora se llama juan juan y su apellido va a ser fuentes masculino y lo voy a abordar dice que ha sido guardado y si se ha abordado pero mi tabla no se ha actualizado mira no se ha actualizado no necesito realizar esa actualización Ahora, ¿cómo hago esa actualización? Sencillo, sencillo. ¿Cómo hago esa actualización? Súper, súper sencillo.
¿Por qué súper sencillo? Porque luego, luego, luego de que yo realice el ingreso de datos, esto debería de actualizarme. ¿Ok?
Y yo necesito actualizar esa, yo necesito actualizar mi tablita. Pero no es tan sencillo como volver a llamar el SELEC. Sino que en esto de Tech Inter, lo que yo tengo que hacer es...
eliminar todos los registros de la tabla y volverlos a consultar porque finalmente en dentro de esa función pues lo que realmente sucede es que python elimina la tabla y vuelve a consultar y te devuelve los nuevos datos eso es lo que hace interiormente y tenemos que hacerlo eso a mano para realizar esa actualización ok y eso es lo que tenemos que hacer ahora ya ahora pero eso es la parte ya de la interfaz no tiene nada que es no tiene nada que ver a lo que es clientes ni conexión a base de datos como tal no necesitamos crear eso solo necesitamos crear esa función en nuestra interfaz y para que se vaya actualizando y actualizando cada vez que ingrese se actualiza cuando yo voy a modificar que se actualice cuando yo voy a eliminar que se actualice entonces eso vamos a ir vamos a hacer entonces vamos a ir a la parte final aquí y vamos a crear un nuevo una nueva función, pero se va a llamar, ¿cómo se va a llamar? Actualizar TreeView, que finalmente ese es el control que vamos a actualizar, nuestro arbolito, nuestra tablita. Y para actualizar vamos a...
necesitar actualizar pues nuestra variable tree que es una variable global por eso era importante que tengamos nuestras variables globales te das cuenta porque estamos empezando a utilizarlas en diferentes partes de nuestra interfaz bien entonces ahora no nos olvidamos de nuestro poderoso try y aquí lo que primero tengo que hacer es borrar todos los elementos actuales del treeview pero a mano está la cosa y eso es la forma de actualizar una actualización básicamente es eliminar lo anterior y traer lo nuevo no entonces lo que tenemos que hacer para eso vamos a decir el tri punto delete porque vamos a eliminar quiero que alinees todos los registros asterisco 3 punto get get children si de por qué esto de get children sencillo mira te explico las cabeceras vendrían a ser los padres y el registro de los hijos entonces quiero que me vacíes todo menos los padres o sea menos las cabeceras las cabeceras de jalas esos que dice hay de nombres apellidos esas las dejas sólo quiero que me elimine es el contenido eso lo que le estoy diciendo y ahora lo que necesitamos es obtener los nuevos datos que deseamos mostrar deseamos mostrar y cuáles son esos datos que deseamos mostrar pues ya sabes cómo hacer los datos igual hace hace clientes punto a mi función mostrar clientes tal cual como era el de mostrar aquí listo hasta ahí súper claro ahora lo que voy a hacer es no me sirve con obtenerlos tengo que insertarlos porque así como lo estoy eliminando ahora le estoy obteniendo y luego tengo que insertarlos entonces insertar los nuevos datos en el trío en el trivio perfecto y como se inserta tal cual como lo hemos hecho aquí con este ford recuerdos de este ford lo copiamos el ford que era para mostrar lo copiamos y lo vamos a utilizar aquí listo lo vamos a reutilizar un pequeño espacio listo y ya está que nada más no somos no estamos olvidando de nuestro excepto acá nuestro excepto valor error error si es que no sale es que no nos actualiza que nos diga ese error error al actualizar tablas no realizar tabla y que me muestre en ese parámetro el error format error perfecto listo ya lo tenemos súper claro entonces ahora yo puesto yo lo puedo reutilizar varias veces el de actualizar trivió y eso es lo que yo voy a hacer Eso es lo que yo voy a hacer, ¿verdad? ¿Dónde lo voy a llamar? Cada vez que se ingrese. Esta es mi función de guardar registro.
Entonces, aquí es donde yo lo voy a llamar, justo aquí en el medio. Luego de que ingrese, me muestra el mensaje de que los datos fueron guardados, que se actualice. información, solamente voy a llamar a mi función actualizarTribute que así se llama el de aquí abajo lo voy a llamar y nada más entonces dentro de mi guardar registros también está mi actualizar Tribute pero esta función está está fuera solamente le estoy llamando para poder reutilizar para mi actualización y para mi eliminación de registros de más adelante por eso es importante hacerlo separado y cada cosita que haga con una cosa específica para poderlo reutilizar bien entonces ahora vamos a probar vamos a ejecutar ya nos hace el último registro cuando ahora vamos a llenar uno nuevo y se tendría que actualizar nuestra tablita luego de haber ingresado nuevo dato así que vamos a ver acá nuevamente mario apellido no sé Igual que Mario Bros, ¿ok?
Mario Bros, sexo masculino, guardar. Los datos fueron guardados, aceptar y ya se actualizó la tableta automáticamente. Ya no necesito ir a MySQL para verificar que se haya actualizado.
Acá en mi misma aplicación puedo visualizarlo. Ya se actualizó, mira. 4, Mario Bros, masculino. Perfecto. Entonces hasta ahí ya tengo súper claro y bien hecho lo que es la parte de mostrar.
Inclusive ya con su pequeño actualizador de tabla que me va a servir más adelante para el modificar y para el eliminar. bien ahora lo que vamos a hacer es el actualizar pero antes de hacer el actualizar necesitamos hacer algo también importante si no no nos va a funcionar cuando le hagamos clic a este registro estos datos tienen que pasar aquí ¿Verdad? Eso tendría que funcionar así. ¿Cómo, cómo, Frank? Mira.
Si yo le hago clic ahorita en Mario, este 4 tendría que pasar al campo acá. Acá debería estar 4. Este Mario tendría que pasar al campo de nombres. Acá tendría que estar escrito Mario. Este Bros tendría que pasar aquí. Va a tener que estar a bros y de acuerdo a lo que yo seleccioné, le pongo un nuevo valor, le hago clic en modificar y debería modificarse.
Entonces antes de modificar y eliminar, necesitamos crear la función de seleccionar para que esos datos pasen de aquí a aquí. a mis camis en try oa míster box para que pase y eso es importante si no hacemos eso nos va a funcionar fatal y no va a ser tan dinámico ni tan amigable con el usuario así que tenemos que hacer este de seleccionar bien entonces vamos a finalizar esto vamos a cerrar y esto de seleccionar pues como solamente es una funcionalidad de fuera de la aplicación solamente la vamos a programar aquí en nuestra interfaz vamos aquí debajo de nuestro actualizar y vamos a crear una nueva función que se llama red de función de elección a registro no seleccionar registro para que funciones ahora qué valor qué parámetro va a necesitar un evento porque es un clic y el que el clic es un evento entonces eso va a necesitar ahí ok el de seleccionar ahí perfecto evento dos puntos ok no hay problema no se olvidó de nuestro poderoso try perfecto ya ahora lo que necesitamos ser primero es obtener el aire del elemento seleccionado primero seleccionado seleccionado no seleccionado y para eso tenemos que poner tenemos que llenar o mejor dicho tenemos que llenar pues hacer como un tipo focus porque vamos a obtener cuando le hagamos clic estamos enfocando esos registros que tienen que pasar y eso lo que vamos a hacer aquí todo lo dejamos para después no hay problema y aquí vamos a hacer eso vamos a crear una variable que se llama selección selección selección solo selección mejor la selección va a ser igual ítem seleccionado, mejor, ok, para que sea más ítem seleccionado, va a ser igual a tree.focus, ok, punto focus, bien, tree.focus, ya, entonces hasta ahí, súper claro, no, tree.focus, ahora lo que necesitamos hacer es eso, necesitamos realizar esta comparación porque vamos a hacer uno a uno que los datos pasen del lado derecho al lado izquierdo entonces si el ítem seleccionado que vamos a seleccionar y aquí vamos a obtener recién obtener los valores por columna no obtener los valores por columna tú ya estás ya relacionado con esto de las columnas, ya sabes que es 0, 0, column 0, etc, etc, etc entonces para realizar este traspaso de datos tenemos que eliminar lo que hay en un lado en los casilleros, en los textbox y rellenarlos eliminarlos, rellenarlos delete, insert, delete, insert, delete, insert perfecto, súper claro, entonces aquí vamos a crear una variable que se llama values va a ser igual a tree.item o item, y aquí el item seleccionado nuestro variable item seleccionado el item que vamos a seleccionar va a estar aquí como corchetes vamos a obtener esos valores seleccionados hasta aquí solamente los estamos obteniendo y los estamos guardando en mi variable vale solamente los valores ojo que luego necesitamos establecer los valores en los widgets y ya sabes que son widgets no son los controles de nuestra interfaz son widgets en trade que son nuestras entradas nuestros textos y en nuestros casilleros primero nuestros text box nuestro textbox id punto delete solamente lo estoy manejando oye Frank, ¿por qué no estás utilizando las variables globales? sencillo, porque no las estoy reemplazando, solamente no las estoy modificando como tal, sencillo textbox id punto delete voy a eliminar esto que me elimine desde el inicio hasta el final perfecto el aire y luego a este mismo que se inserte los nuevos el valor que estoy seleccionando de mi tablita de mi estudio insert que me va a insertar desde el inicio los valores de la columna 0 porque de la columna 0 vamos a ejecutar no me va a ser un error pero mira en la columna 0 está el ID en la columna 1 está el nombre en la columna 2 está el apellido y en la columna 3 está el sexo entonces el ID en qué columna está en el 0 bien entonces voy a copiar esto porque necesito reutilizarlo para el de nombres y el de apellidos vamos a poner textbox nombres acá textbox apellidos para el insert y el delete y aquí lo único que voy a cambiar va a ser el 1 y aquí el 2 perfecto hasta el de apellidos normal ahora el del combo es distinto combo punto set aquí directamente el valor ahora si el de la posición 3 porque el como está en la columna 3 ahora si me sale un error no nos olvidamos de nuestro poderoso excepto que hay aquí excepto que es para valor error, haz error, dos puntos para que nos muestra el error si es que llegara a pasar el error, que nos imprima por consola es error, error al seleccionar registro, registro y en ese parámetro que nos muestre pues el error correcto format.error listo, ya está que ya está así, con eso ya ahora este seleccionar, yo tengo que programarlo bien seleccionar registro ¿por qué tengo que programarlo bien? porque tengo que tenerlo luego de donde se programa eso, se programa cuando yo, se programa dentro del preview o sea aquí de arriba aquí en el que estábamos mostrando los registros verdad ahí es donde nosotros tenemos que programar eso tenemos que ejecutar ejecutar la función el hacer clic eso es lo que nos toca programar de hacer clic lo tenemos abajo porque es un evento así que normal y es el evento de selección focus clic y mostrar y mostrar el resultado perfecto en los entra y no en la central perfecto entonces vamos a llamar a nuestro abuelito tri punto 20 o bank y aquí vamos a llamar a una función importantísima que es lo que va a ser posible que funcione con un clic tri views select select ya y acá sus llavecitas perfecto esto lo que hace realmente es eso cuando nosotros le hacemos clic estamos seleccionando elementos del tribus por eso se pinta de azulito este es ese evento es el tribus select bien y cuando pase eso que se ejecute que mi función que se llama seleccionar registro es sencillo y listo ya está que ya está Frank, a esto vamos a quitarle los espacios para que no se vea tan mal si ya está, entonces donde está la magia, esta es la magia el 3bin puede ejecutar estos comandos pero Ya aquí solamente que cuando se haga clic, cuando se seleccione un registro en el preview, se ejecute mi función seleccionar registro, que es lo que yo he programado aquí.
Y casualmente es justamente del evento, ¿no? Que lo que hace es borra lo que hay, inserta lo seleccionado. A ver, a ver, a ver, Fran.
Va a funcionar. A ver, vamos a ejecutar. hacemos clic clic clic clic y no está funcionando mira no está funcionando esto tenemos que tener cuidado ahora lo vamos a corregir en algo súper súper esencial aquí en este tribus le he puesto mayúscula y esto tiene que ser minúscula trivió ok y lo guardo mira aquí trivió minúscula la v si lo pones a mayúscula no te va a salir así como a mí y que ejecutó le hago clic y ya pasan los registros mira de acuerdo a lo que yo los selecciones están empezando a pasar están pasando están pasando le hago clic en tres pasa aquí y esto me va a servir enormemente para lo que es modificar si no yo no voy a poder realizar ahora sí ya estoy completamente listo para hacer mi modificar así que vamos a cerrar eso ya lo tenemos cerrado y a dónde tengo que ir a mi archivo clientes así como tengo mi función de ingresar necesito mi función de modificar no tal cual ya tengo el de ingresar y el de mostrar pero como yo soy super ahorrador y tú no tienes que tener miedo tampoco vamos a reciclar el de ingresar porque es muy parecido ok aquí vamos a pegarlo la misma altura mira solo que se va a llamar modificar clientes modificar clientes ya está ahora para tener esto claro vamos a modificarlo manualmente nuestro muelle sql para saber cuál es la sentencia que nosotros vamos a utilizar y eso lo que vamos a hacer aquí vamos a modificarlo manualmente para modificar un registro nuevamente un selector aquí para ver cuáles podemos modificar porque tenemos cuatro registros acá tenemos cuatro registros vamos a modificar uno de ellos manualmente luego de eso lo vamos a hacer recién con Python bien, entonces update para modificar actualizar la tabla usuarios set, ponerles unos valores, aquí variables usuarios.nombres el nuevo valor le vamos a poner alfred también sale alfred el nuevo nombre luego vamos a copiar esto para el siguiente va a ser vamos a modificar también el de apellidos y vamos a modificar también el de sexo alfred va a ser alfred smith smith usuarios ya este también el de sexo vamos a modificar varios aquí sexo va a ser masculino masculino perfecto 6 súper claro luego en la condicional el filtro web cuando usuarios punto ahí dice igual vamos a verificar el de maría que es femenino que es el segundo cuando el usuario sea igual a 2 Entonces, cuando el usuario sea igual a 2, va a realizar esa actualización.
¿Cuáles son los parámetros? El orden tienes que tener cuidado. El primer parámetro vamos a actualizar en la tabla usuarios los valores de nombres por Alfred, el apellido por Smith, el sexo por masculino, cuando el ID sea 2. En este caso, ¿cuál es el ID 2? El de María.
Vamos a cambiarlo, vamos a actualizarlo. Vamos a seleccionar esto. y vemos de que nos dice aquí un mensaje de que está todo bien nos dice que se ha actualizado correctamente un registro ya hacemos el ex from aquí y vemos de que efectivamente se ha actualizado el registro 2 al frente smith masculino si tú no le pones el web todo se va a actualizar o todos se podrían eliminar actualizarlos modificarlos entonces tienes que tener cuidado y también tienes que tener cuidado en el orden como es mira el primer parámetro es nombres el segundo parámetro es apellidos del tercer parámetro es sexo y el último parámetro es el web que es el código el último es el código el último si tú le pones primero en tu país no va a funcionar así que ten cuidado pero ya lo hemos hecho manualmente esto nos va a servir para para saber cuántos parámetros vamos a utilizar vamos a utilizar todos no bien entonces regresamos a nuestro python y cuántos parámetros vamos a utilizar aquí los que ya habíamos dicho no nombres apellidos sexo y el otro parámetro cuál es el de id usuarios que es el primero no porque mediante eso se va a realizar el filtro id usuario usuario, el resto nombre, apellido, sí ahora que voy a reutilizar de aquí prácticamente todo aquí en mi variable SQL voy a copiar toda la consulta que yo he hecho de mi actualización de forma donal que he hecho hace un momento voy a copiarlo porque sé que funciona y lo voy a pegar aquí y listo y cuáles son los únicos valores que voy a cambiar los que son parámetros exacto este es parámetro el de nombres el de apellidos también es parámetro el de sexo también es parámetro y el último que es el aire también es parámetro que el último que es allí también que es parámetro bien entonces son cuatro parámetros aquí esto lo puedo borrar no no trae ningún problema y en los valores ahí sí voy a tener que tener un cambio voy a tener que respetar el orden el cual este de aquí no el orden de mi consulta el primer parámetro es nombres coincide el segundo parámetro es apellidos coincide el tercer parámetro es sexo coincide y el último parámetro el último parámetro es aquí el de id entonces esto vendría que ser al último verdad al último va a ser este parámetro que es el id usuario para que coincida en el mismo orden esto con esto tienen que estar en el mismo orden luego tal cual registro actualizado aquí esto es lo mismo que al ingresar actualizado luego error de actualización acá y nada más ya está es bastante similar por eso por eso es importante que si tú ya tienes uno ya puedes trabajar los demás de forma bastante similar porque funciona igual prácticamente ya ya tengo ya que ya está sí entonces ahora que me falta programar esto o llamarlo desde mi interfaz así que voy a ir a mi python y sql aquí es donde yo voy a realizar esto de la de la modificación y esto de la modificación también mira voy a reutilizar bastante Esto de guardar registros ya lo voy copiando, porque es bastante similar, como te das cuenta.
Hasta aquí debajo, mira, lo voy, control-c, me voy al final, al final, aquí, y lo pego. Ya no se me va a guardar registros, lo voy a reutilizar, se va a llamar modificar registros, y solo voy a modificar cosas puntuales. Aquí, ¿qué más necesito?
Nombres, apellidos, sí, pero necesito algo más, que es el de... El del ID, ¿no? Sería textbox ID, ese más yo necesito. ¿Por qué?
Por eso estoy realizando el filtro. En el insert solo estoy ingresando nombres, apellidos, el sexo y el group box para tener acceso a todo. Pero en el modificar, adicionalmente necesito también el ID.
Porque acá estoy utilizando el ID, ¿verdad? Mira. entonces si necesito acceso a ese control bien ahora aquí lo mismo solamente que voy a aumentar el aire aquí si es que es no no si es que no ha sido inicializado aquí entonces esto solamente lo voy a cambiar por el aire si es que te xbox hay de nombres apellidos combo todo correcto los widgets no están inicializados, solamente lo estoy aumentando y aquí también lo único que voy a hacer es que le voy a aumentar el valor o mi variable que se va a llamar IDUsuario va a ser igual a Xbox ID, solamente la estoy aumentando porque es lo que realmente yo voy a requerir nada más y listo, solamente tiene un parámetro más el de actualizar a diferencia del insertar, que más necesito aquí con Boget, aquí el acá también tiene que coincidir esto tiene que coincidir con este de aquí en acá primero le puesto el usuario entonces aquí también tengo que ponerle primero el usuario que hay de usuario aquí ya tengo está coincidiendo y de usuario nombres apellidos sexo hay usuario, nombres, apellidos, sexo, están coincidiendo los parámetros, perfecto, acá información de los datos fueron actualizados, si es que se actualizan, la información fue actualizada, perfecto, luego de que se actualice, también que se actualice la tabla, tal cual, es bastante similar, y aquí lo que tengo que comentarle también es el textbox, Pero el del ID, ¿verdad?
Que es el único que estoy incrementando. Textbox ID, nada más. Y aquí el de ingresar, ya no va a ser el de ingresar, pues.
Esto me estoy olvidando. Acá tiene que ser el de modificar clientes, ¿verdad? Así se llama.
Y listo, mira, solamente he reutilizado casi todo de mi ingresar. Ahora, ¿qué me falta, Fran? Tengo que llamar acá a mi función que se llama modificar registros en mi botón modificar.
voy aquí arriba voy a mi botón aquí está mi botón modificar entonces acá comand comand modificar registros Y listo, mira, ya tengo mi modificar registro. Guardo, ejecuto y vamos a ver. A ver si es que no me he equivocado. Vamos a modificar el de Juan Fuentes. Ahora va a ser femenino.
Y va a ser Juana Fuentes. Y luego voy a hacerle clic en modificar. Dice que fueron modificados. Y ya ha sido modificado, mira.
3 Juana Fuentes femenino. Y ya funciona. Realmente ya está.
Ya hemos hecho la parte de modificar, ¿ves? Super fácil. si hemos reciclado bastante código del ingresar es que todo funciona así ok tienes que tener en cuenta de que todo funciona si es que ya te sale una solamente le das algunas pinceladas y ya puedes reutilizarlo y te funcionaría para modificar eliminar lo que tú quieres ya solamente quería ser cuidadoso en los parámetros que pasan que tú vas a requerir nada más bien entonces hasta ahí ya tenemos la parte de modificar y lo que nos faltaría sería la parte de eliminar bien ahora vamos a hacer la última parte que es la de eliminar y para eso tenemos que cerrar aquí nuestro nuestra aplicación y tenemos que ir ya sabes aquí a nuestro clase de clientes y vamos a eliminar para eliminar vamos a reutilizar esto de modificar porque es bastante similar vamos a reutilizarlo con su cuerpo lo aquí debajo y acá lo tenemos ya modificar clientes sería eliminar clientes verdad y eliminar clientes clientes ya ahora cuántos parámetros utilizar frank para que no te confundas corre a tu maíz y que aquí realiza una eliminación de forma manual y eso lo que vamos a hacer aquí vamos a realizar una eliminación de forma manual delete de eliminar pero usuarios como se puede eliminar registros de la tabla usuarios donde solamente el código sea igual a vamos a eliminar a mario bros que es el 4 cuando el código sea igual a 4 a ver vamos a eliminar al mayor 2 que está aquí en verdad hasta el 4 es mario bros vamos a eliminarlo de forma manual ejecutamos nos dice que una pila ha sido afectada vamos a ver si eso es verdad no te olvides del web al eliminar gol actualizar siempre y efectivamente mario se fue ya no existe mario se eliminó eliminamos a mario ahora va a ser me dar uno más al fer vamos a eliminar en el 2 el 2 vamos a eliminar aquí en este formó manual te vas alfred delete eliminado vamos a hacer el selector y vemos de que le hemos eliminado desde el 1 se salta directamente al 3 ya entonces funciona cuántos parámetros estoy utilizando para eliminar solamente uno mira el del aire El ID que coincida es eliminado. Sencillo. ¿Cuántos parámetros?
Uno. Entonces ya te queda súper claro. En mi función de eliminar clientes, ¿cuántos voy a necesitar?
Solamente uno. Lo borro todo. Solo dejo el de usuarios.
Lo demás tal cual lo dejo. Ahora el de loopdate voy a ir a mi. Voy a SQL. Voy a copiar. Mi sentencia aquí, la voy a pegar aquí, mira, la voy a pegar aquí, completa, y lo único que voy a parar va a ser este parámetro, el del código.
Ya sabes, porcentaje, ese, eso le indica, pues no, que es un parámetro. Ahora aquí solamente un parámetro, tal cual, y ya está. que ya está si mira está tal cual ahora el ronco registro eliminado acá eliminado error de eliminación acá eliminación y listo ya está ya lo que ya está tan rápido si mira tal cual es ya tenemos el eliminar el cliente ya está ahora lo que tenemos que hacer es a nuestra interfaz y hacer lo mismo que hemos hecho hace un momento vamos aquí debajo tenemos el de modificar Vamos a, acá mira el de modificar, inclusive en el except, aquí tenemos que corregir, ¿no? Para que nos salga el error correcto, error al modificar esto también le vamos a modificar. Listo, para que coincida, bien.
Entonces vamos a reutilizar todo lo que es de modificar también, mira. Copio, voy aquí debajo. y lo pego y hasta voy a reutilizar esta función solamente que ahora voy a utilizar el de eliminar como se va a llamar eliminar registros no eliminar registro estoy reutilizando mira todo es reutilización ahora para eliminar registros que voy a necesitar solamente uno el de la y y que nada más prácticamente no el de ahí perfecto entonces solamente voy a realizar una comparación del aire todo lo demás lo borró perfecto si es que está en no hay nada pues no ha sido inicializado ahora el de sexo tampoco no me interesa solo necesito el del aire porque el de casi clases de clientes y voy a llamar a mi función que se llama eliminar clientes, copio su nombre, lo voy a llamar y solamente pide un parámetro que es el de ID usuarios que está aquí.
solo esa información de los datos fueron eliminados acá eliminados luego que se actualice la tablita y por esto también porque sólo voy a limpiar antes no espera para eliminar si voy a necesitar eliminar los otros los tres no entonces aquí si voy a necesitar también el de textbox nombres aquí el de textbox apellidos también porque los voy a reemplazar aquí no los voy a eliminar entonces sí para limpiar solamente los campos y listo ya está ahora voy a llamar a mí de mi función eliminar registros este mi botón voy a copiar esto voy a mi botón eliminar donde está mi botón aquí arriba está aquí es el de eliminar en grid en comando bien y aquí lo que vamos a hacer es que vamos a utilizar el comando para que se ejecute esa instrucción, comand, eliminar registros, y listo, mira, ya está, entonces con eso ya debería funcionar, le vamos a ejecutar, vamos a eliminar a Juana Fuentes, la seleccionamos, no me quiero eliminar a mí, si quieres tú te eliminas, yo no, ok, entonces vamos a eliminar, vamos a seleccionar a Juana Fuentes, vamos a eliminar aquí, nos dice que ha sido eliminado, y vamos a ver y nos sale que es un error vamos a ver qué es lo que está sucediendo aquí nos dice que hay un error aquí en el tipo de lista que tiene que hacer una tupla entonces eso es lo que tenemos que verificar ahora dónde es que vamos a verificar eso es lo que yo te decía que como único elemento de las tuplas tenemos que tener cuidado en eso ok como único elemento entonces vamos a nuestro cliente si aquí solamente hay un elemento usuario y no nos está reconociendo como tuplas y que tenemos que poner aquí una comita guardamos y ya mira que es lo que he hecho la comida para que diga que es una tupla listo ahora regreso a mi interfaz ejecuto y vamos a ver si elimina a juana fuentes le hacemos clic eliminar y nos dice que ha sido eliminado y ya se eliminó no entonces ese error era el de la tupla que yo te decía un inicio dice que es importante pues es súper súper importante y al final nos hemos quedado con solamente el primer registro que hemos ingresado entonces hasta ahí ya tenemos súper claro lo que es ya hemos hecho el mostrar eliminar modificar e ingresar datos de este país tomamos y se cuelga lo que tocaría a continuación es probar nuestra aplicación para ver que esté funcionando todo correctamente para verificar que esté funcionando todo correctamente pues vamos a volver a ejecutar nuestra aplicación aquí y vamos a hacer primero el de ingresar vamos a ingresar un nuevo registro se va a llamar juan pérez que es masculino le hacemos clic en guardar y se ha guardado juan pérez vamos a ingresar uno más se va a llamar pedro una mujer se va a llamar maría nuevamente maría gonzález ok maría gonzález gonzález le vamos a poner el sexo femenino le podemos guardar y ya está ya está guardando todo correctamente ves mira de acuerdo se actualiza todo automáticamente ahora vamos a seleccionar el de juan vamos a seleccionar y vamos a modificar se va a llamar juana pérez y va a ser femenino luego le hacemos clic en modificar y vemos de que se ha modificado correctamente Juana y ahora es femenino perfecto ahora vamos a eliminar a María hacemos clic a María bueno ya vamos a eliminarme a mí ya el primero hacemos clic al primer registro y vamos a eliminar eliminar y ya se ha eliminado y se ha actualizado también la tabla perfecto entonces hasta ahí vemos con esta aplicación nuestro crud de python como ya se puede utilizar la interfaz gráfica con tec inter ha funcionado correctamente espero que hayas aprendido y finalmente no te olvides de compartir el tutorial el vídeo dejarnos un like suscribirte al canal de seguro tecnológico donde tenemos por ejemplo un curso de java desde cero este son solamente el primer módulo que es la parte de fundamento de java tiene más de 17 horas de contenido son 52 vídeos puedes darle una revisada y puedes aprender llama totalmente bien explicado y totalmente gratis así que en el canal te invito a revisar el curso está súper genial se le puso bastante dedicación y también puedes aprender que esto ya es que ya creo que has aprendido sobre hacer un cross de python con maya se cali una forma rápida y sencilla no te olvides de suscribirte y finalmente nos vamos a ver en el próximo vídeo o en el próximo en el próximo tutorial alto que recuerda que puedes descargar el código de este tutorial desde nuestra web sin rueda tecnológica punto tech al adquirir no solamente vas a tener el código sino también vas a apoyar a que este proyecto siga siendo sostenible en el tiempo y así poder seguir creando cursos y tutoriales gratuitos para todos