00:00:00
Hola qué tal Amigas y amigos Bienvenidos
00:00:04
a su canal python 101 comenzamos
00:00:08
Este es el segundo vídeo en el que
00:00:10
estamos desarrollando este ejercicio en
00:00:14
el cual vamos a crear las operaciones de
00:00:18
inserción
00:00:19
eliminación modificación y consulta de
00:00:23
datos a una base de datos en mysql desde
00:00:26
python en el vídeo anterior
00:00:28
desarrollamos la ventana este entorno
00:00:31
gráfico en donde insertamos estos
00:00:34
botones estas cajas de texto y colocamos
00:00:37
este trivium Así que si no has visto ese
00:00:41
vídeo aquí arriba Te voy a dejar el
00:00:43
enlace porque es el vídeo previo a este
00:00:48
como resultado del vídeo anterior
00:00:49
Entonces esto es lo que desarrollamos
00:00:51
esta ventanita que tiene ya estas cajas
00:00:53
de texto estos botones y este control
00:00:56
review y el día de hoy vamos a conectar
00:00:58
a nuestra base de datos pero aparte de
00:01:02
ver el vídeo anterior tenemos ciertos
00:01:05
prerrequisitos es decir vamos a trabajar
00:01:08
con una base de datos en mysql entonces
00:01:11
necesitas tener instalado mysql pero si
00:01:15
no tienes instalado mysql No te
00:01:17
preocupes aquí te voy a dejar dos vídeos
00:01:19
en donde instaló el servidor de base de
00:01:22
datos de mysql y también Heidi sql que
00:01:25
es el entorno gráfico que vamos a estar
00:01:27
utilizando luego el prerrequisito número
00:01:31
2 es que tenemos que instalar el
00:01:32
conector de python a mysql Pero no te
00:01:35
preocupes o ya lo hice en videos
00:01:37
anteriores por eso no lo voy a hacer
00:01:38
ahorita luego necesitamos importar o
00:01:41
crear la base de datos B de ejemplo que
00:01:43
es la que vamos a estar utilizando y
00:01:45
finalmente necesitamos crear una clase
00:01:48
una clase countrys que es donde ya
00:01:50
hacemos las operaciones de consulta
00:01:53
insertar modificar y eliminar a través
00:01:56
de una clase para esto tengo dos vídeos
00:01:59
Es recomendable seguir los dos vídeos en
00:02:02
orden para que puedas complementar o
00:02:05
para que puedas desarrollar esta clase
00:02:07
con tres
00:02:08
en Sí este es el vídeo en donde te
00:02:11
explico Cómo descargar e instalar mysql
00:02:14
y también Heidi sql aunque también te
00:02:17
explica Cómo instalar works Este vídeo
00:02:21
te voy a dejar el enlace aquí arriba a
00:02:23
la derecha Búscalo pero también abajo en
00:02:25
la descripción del video en ese vídeo
00:02:28
Bueno nos vamos a la página de mysql lo
00:02:31
que hacemos Es descargarlo y hacer la
00:02:33
instalación tanto de mysql como de Heidi
00:02:36
sql G de sql es un entorno gráfico para
00:02:39
que tú puedas manipular tus bases de
00:02:42
datos específicamente este es hay de sql
00:02:45
no es esto el servidor de base de datos
00:02:49
mysql si no es nada más un entorno
00:02:51
gráfico mediante el cual tú puedes
00:02:53
conectarte a tu base de datos de tu
00:02:56
servidor de base de datos de mysql y
00:02:58
manipular de una manera fácil a través
00:03:01
de este entorno gráfico tus bases de
00:03:03
datos Pero no te preocupes porque te
00:03:05
digo los enlaces a estos vídeos los dejo
00:03:08
abajo en la descripción después de que
00:03:10
hayas hecho esta instalación te dejo
00:03:12
opcional este vídeo en donde te explico
00:03:16
Cómo crear tablas y registros en Heidi
00:03:18
con mysql este es opcional Si quieres
00:03:21
puedes este verlo si no no es necesario
00:03:26
simple y sencillamente aquí te doy más
00:03:28
herramientas para que te acostumbres a
00:03:30
utilizar Heidi sql después de que hayas
00:03:34
instalado mysql Heidi sql si es
00:03:38
necesario que instales el conector Cómo
00:03:40
se instala el conector en python este
00:03:43
conector que va a ser el conector te va
00:03:45
a permitir conectar precisamente python
00:03:47
con mysql y para instalarlo Bueno
00:03:50
hacemos tenemos que ejecutar esto pib
00:03:53
install mysql conector python y luego
00:03:56
Aquí te explico Cómo crear la cadena de
00:03:59
conexión pero este vídeo te lo dejo
00:04:02
también abajo en la descripción te
00:04:04
recomiendo que lo veas es muy importante
00:04:06
porque si no instalas el conector no
00:04:08
poder trabajar con lo que vamos a hacer
00:04:11
hoy y realmente en ese vídeo te explico
00:04:13
Tres formas de hacerlo Esta es otra con
00:04:16
pib install
00:04:18
mysql esta es otra forma si no te
00:04:20
funciona el conector anterior este y
00:04:22
aquí en este mismo vídeo más adelante te
00:04:24
explico también otra forma de hacerlo
00:04:26
que es esta con pib install mysql guión
00:04:30
python son tres formas tú eliges cuál
00:04:33
pero tienes que ver todo este vídeo te
00:04:35
lo dejo abajo en la descripción una vez
00:04:38
que ya tienes el conector Bueno ahora lo
00:04:41
que vas a hacer es que vas a importar
00:04:43
esta base de datos que se llama bd
00:04:46
ejemplo.pay Pero no te preocupes yo te
00:04:49
tengo este vídeo en el cual ya lo hice y
00:04:51
te voy a dejar también este vídeo en la
00:04:53
descripción en este vídeo Aquí también
00:04:56
va a estar el enlace a la base de datos
00:04:59
Esta es la base de datos Y está en
00:05:01
github te voy a dejar el enlace es una
00:05:04
una base de datos muy simple con una
00:05:06
tabla nada más la tabla co y que tiene
00:05:09
algunos registros ya insertados
00:05:11
previamente Pero no te preocupes si no
00:05:14
sabes cómo este cómo importar tu base de
00:05:18
datos te lo explico en este vídeo que te
00:05:20
decía está abajo Esta es la base de
00:05:22
datos Esta es la base de datos que se
00:05:24
llama bd ejemplo como quieras que se
00:05:27
llame según cuando la importes pero
00:05:29
tiene una tabla que se llama contris y
00:05:31
tiene estos registros que son algunos
00:05:33
países tiene estos Campos que es el id
00:05:35
ISO 3 Contry name capital y currency
00:05:38
code y te decía en este vídeo te explico
00:05:41
Cómo poder hacer un update un Select y
00:05:45
luego
00:05:46
en este otro vídeo que también te dejo
00:05:49
abajo en la descripción de este vídeo
00:05:51
que se llama base de datos con python
00:05:54
ejercicio completo desarrollamos una
00:05:56
clase que se llama
00:05:58
countrys esta clase countrys tú la vas a
00:06:02
tener De hecho si gustas te voy a dejar
00:06:05
el enlace para que descargues ya esta
00:06:08
clase pero realmente si lo que te
00:06:11
importa es aprender Ve el vídeo Para que
00:06:14
veas Para qué sirve cada una de las
00:06:18
sentencias por qué porque ahí te explico
00:06:20
Cómo hacer el Select Cómo hacer el
00:06:23
update Cómo hacer el de Led y el código
00:06:26
de esta clase Bueno te lo dejo Ahí aquí
00:06:28
abajo también en la descripción
00:06:30
lógicamente tienes que acceder a esta
00:06:32
URL y descargarte el código
00:06:36
una vez que lo hayas descargado lo que
00:06:38
vas a hacer es que lo vas a descomprimir
00:06:40
vas a entrar a la carpeta donde está
00:06:43
este código y vas a encontrar dos
00:06:45
archivos uno que es contrist punto Pipe
00:06:48
y uno que es main.pike lo importante es
00:06:51
que copies este archivo contris punto
00:06:54
Pay en la carpeta en donde estás
00:06:56
desarrollando tu proyecto Esta es la
00:06:59
carpeta donde estoy desarrollando mi
00:07:00
proyecto y este es el código que hicimos
00:07:02
en el video anterior Este es el Main y
00:07:05
aquí está la clase ventana Entonces te
00:07:08
decía en la misma carpeta tienes que
00:07:10
copiar este archivo que se llama
00:07:12
contrist punto Pipe y lo que tienes esto
00:07:15
tiene una clase que es la clase countrys
00:07:18
sale y en esa clase con tres Bueno hay
00:07:21
un constructor en donde se hace la
00:07:23
conexión a la base de datos Tienes que
00:07:25
checar que bueno si estás trabajando de
00:07:28
manera local aquí Sería localhost para
00:07:30
acceder a tu servidor de base de datos
00:07:32
mysql el usuario que vayas a utilizar si
00:07:35
quieres conectarte con Root que es como
00:07:37
yo lo estoy haciendo puedes poner aquí
00:07:39
si tu usuario root de tu base de datos
00:07:41
tiene un password se indica aquí si no
00:07:44
lo dejas vacío como en este caso luego
00:07:46
aquí enfrente pones el nombre de tu base
00:07:49
de datos en mi caso se llama B de
00:07:51
ejemplo Pay pero pudiera tener otro
00:07:54
nombre en tu caso lo importante es que
00:07:57
respetes el nombre que tú tienes en
00:07:59
Heidi sql Aquí tengo hay de sql y aquí
00:08:03
está mi base de datos se llama B de
00:08:05
ejemplo Pay entonces tiene que tener el
00:08:07
mismo nombre y como te lo decía tienes
00:08:09
que ya tener aquí tu base de datos que
00:08:12
ya cuenta con tu tabla contrastes
00:08:15
Entonces lo importante es que cuides
00:08:17
estos datos el nombre de tu base de
00:08:19
datos
00:08:20
localhost si estás en tu misma máquina
00:08:22
si está en otra máquina la IP el usuario
00:08:25
que vas a ocupar puede ser Root puede
00:08:27
ser otro dependiendo Si Tú manejas
00:08:28
usuarios dentro de malla sql y el
00:08:31
password que tú tengas este según la
00:08:34
instalación que tengas de sql entonces
00:08:37
aquí tenemos el método
00:08:39
init que es el constructor luego tenemos
00:08:42
el str el str lo que hace es este
00:08:46
generarnos una cadena de caracteres y lo
00:08:50
que está aquí haciendo es haciendo un
00:08:52
llamado método que es consulta países y
00:08:54
consulta países lo que hace es un Select
00:08:57
lo que ejecuta es seleccioname todos los
00:09:00
países o todos los campos de la tabla
00:09:02
países hace un Select general entonces
00:09:05
aquí qué hacemos Hacemos esa consulta y
00:09:08
luego por cada renglón que venga aquí lo
00:09:11
que estamos haciendo es que lo estamos
00:09:13
concatenando en un String que es este
00:09:16
aux y eso es lo que regresamos en pocas
00:09:19
palabras cuando llamamos a este método
00:09:21
str que realmente se llama de manera
00:09:24
directa
00:09:26
cuando accedemos al objeto de esta clase
00:09:29
luego Tenemos aquí un método para buscar
00:09:32
país lo que hace es Nosotros le pasamos
00:09:35
ID y lo que nos va a regresar Es que nos
00:09:38
va a regresar el renglón si es que
00:09:40
existe Tenemos aquí el método inserta
00:09:44
país que recibe ISO 3 Counter name
00:09:46
capital currency y lo que hace es
00:09:49
precisamente ejecutar un inser hacer una
00:09:52
inserción en la
00:09:54
base de datos elimina país Aquí está
00:09:57
nosotros que le pasamos al aire y lo que
00:09:59
va a hacer es eliminar el país desde la
00:10:03
base de datos modifica país este método
00:10:07
lo que hace es que recibe el ID recibe
00:10:09
los demás valores ISO 3 contra name
00:10:12
capital
00:10:13
lo que hace aquí es Modificar el
00:10:16
registro cuyo ID es el valor que
00:10:20
nosotros pasamos acá y lo modifica con
00:10:22
los datos que nosotros estamos indicando
00:10:24
acá Entonces esta clase ya trae la
00:10:27
opción de modificar la opción de
00:10:30
eliminar la opción de insertar la opción
00:10:33
de buscar un país y la opción de hacer
00:10:36
una consulta o hacer un Select y
00:10:39
nosotros lo que vamos a hacer es que
00:10:40
vamos a crear un objeto de la clase de
00:10:44
la clase counters entonces en nuestra
00:10:47
ventana aquí lo primero que vamos a
00:10:50
hacer es que vamos a importar esa clase
00:10:52
vamos a indicar aquí from country
00:10:59
por countrys import
00:11:03
t y vamos a indicar counters sale lo que
00:11:06
estamos importando es precisamente la
00:11:09
clase de la clase countrys o realmente
00:11:14
podríamos dejarlo aquí igual con un
00:11:16
asterisco que realmente solo tiene una
00:11:19
clase ahí dentro Entonces de esa manera
00:11:22
nosotros ya importamos la clase desde
00:11:25
este archivo que se llama lo estamos
00:11:28
importando luego aquí dentro de nuestra
00:11:31
clase vamos a crear
00:11:33
una variable una variable a nivel de
00:11:36
clase Entonces vamos a poner count vamos
00:11:39
a crear una variable que sea países
00:11:43
países es igual a
00:11:47
a countrys aquí pues nada más parentes
00:11:51
paréntesis estamos creando un objeto de
00:11:53
la clase contrist entonces lo que se
00:11:55
llama es este constructor que tenemos
00:11:57
aquí que no recibe ningún parámetro
00:11:58
recibes lo recibe todos entonces de esta
00:12:02
manera ya tendríamos una variable que
00:12:04
sería países países es un objeto de la
00:12:07
clase counters y en el botón nuevo para
00:12:10
probar si esto funciona lo único que
00:12:12
vamos a hacer aquí en el botón nuevo es
00:12:14
que vamos a poner print vamos a imprimir
00:12:17
la variable países
00:12:20
eso es lo único que vamos a hacer Pero
00:12:23
la variable países tenemos que poner
00:12:25
self porque es una variable miembro una
00:12:28
variable este o un miembro de esta clase
00:12:31
cell punto países nos referimos a esta
00:12:34
variable
00:12:36
entonces para correr Este programa
00:12:38
Acuérdate que tenemos que hacer los
00:12:40
siguientes hay que guardar los tres
00:12:42
archivos que tenemos en nuestro proyecto
00:12:44
que es countrys que no le movimos nada
00:12:46
realmente que es ventana hay que
00:12:49
guardarlo y hay que irnos al made y
00:12:51
desde aquí corremos nuestro programa
00:12:54
Entonces esto es lo que tenemos como
00:12:57
salida Esta es nuestra ventanita pero
00:12:59
cuando des click en el botón nuevo
00:13:01
observa la salida acá abajo debe
00:13:04
imprimir la lista de los países entonces
00:13:06
damos clic aquí nuevo y esto es lo que
00:13:09
obtenemos te das cuenta imprimió ahí la
00:13:12
lista de los países Eso quiere decir que
00:13:16
está funcionando bien que está
00:13:17
consultando está haciendo el Select a la
00:13:20
base de datos lo vuelvo a dar clic en
00:13:22
Nuevo lo va a imprimir abajo de esto
00:13:23
veamos Ahí está Esto es lo que acaba de
00:13:26
imprimir
00:13:28
Y cómo pasó eso bueno para que te
00:13:31
explique todo lo que hay ahí atrás
00:13:32
Necesitas ver los vídeos que ya te había
00:13:36
comentado Entonces lo único que nos
00:13:38
estamos haciendo aquí es cuando nosotros
00:13:40
damos clic en el botón nuevo se ejecuta
00:13:43
este método que es F nuevo y lo que
00:13:46
estamos haciendo es imprimir países
00:13:49
Entonces cuando nosotros imprimimos
00:13:51
países imprimimos un objeto de la clase
00:13:54
países en ese momento se ejecuta el
00:13:57
método str que es este que tenemos aquí
00:14:00
y qué es lo que está haciendo bueno lo
00:14:04
único que está haciendo es que está
00:14:06
llamando aquí al método consulta países
00:14:08
que es esto este método que tenemos acá
00:14:10
y lo que hace es un Select Select
00:14:12
asterisco from countrys es decir que en
00:14:16
tu base de datos que es a donde nos
00:14:19
estamos conectando lo que está haciendo
00:14:21
esta consulta Select * Front Counter si
00:14:25
tú lo ejecutas pues esto es lo que te va
00:14:26
a dar te va a regresar todos los países
00:14:28
que se encuentran en esta tabla countrys
00:14:32
Y eso es lo que se obtiene aquí eso es
00:14:35
lo que se obtiene pero realmente aquí lo
00:14:38
que se está haciendo es recorriendo
00:14:40
todos estos datos es decir la variable
00:14:45
datos que es lo que obtenemos se recorre
00:14:48
con este foro y lo que obtenemos aquí es
00:14:50
un Rock o sea un renglón y ese renglón
00:14:54
lo que estamos haciendo es concatenarlo
00:14:57
en una variable de tipo String nada más
00:14:59
para ponerle salto de línea al final y
00:15:02
después lo que te regresa es aux pero
00:15:04
nosotros no queremos un String realmente
00:15:07
queremos la lista Entonces vamos a
00:15:10
llamar al método consulta países que es
00:15:13
el mismo método que nos va a regresar la
00:15:16
lista de países entonces lo que tenemos
00:15:19
que hacer acá es simple y sencillamente
00:15:22
llamamos a nuestro objeto países
00:15:29
y desde este objeto países vamos a
00:15:32
llamar al método consulta países que es
00:15:36
este método que tenemos acá Este método
00:15:38
consulta países es el que nos va a traer
00:15:41
la lista no como un String sino como una
00:15:44
lista de países y vamos a recorrerlo con
00:15:48
un Ford ya tenemos un Ford acá en el
00:15:51
método str que es este foro que tenemos
00:15:53
por aquí ese mismo Ford es el que vamos
00:15:57
a utilizar acá para recorrer esta lista
00:16:00
Entonces nosotros podríamos por ejemplo
00:16:04
aquí poner datos que sería datos es
00:16:07
igual a lo que nos regrese el método
00:16:10
consulta países y entonces en este foro
00:16:13
lo que estamos haciendo es recorrer
00:16:15
datos ahora lo que vamos a hacer aquí
00:16:19
dentro del ciclo for Para empezar es ver
00:16:22
qué es lo que estamos obteniendo
00:16:25
para ver qué es lo que estamos
00:16:26
obteniendo llamamos al método type y le
00:16:29
vamos a pasar Road es decir Queremos
00:16:32
saber de qué tipo es Y esto es lo que
00:16:34
vamos a imprimir
00:16:36
vamos a eliminar esto que tenemos por
00:16:39
acá abajo y ahora sí nada más está
00:16:41
imprimiendo
00:16:43
damos clic aquí en Nuevo y lo que hace
00:16:46
es imprimirnos la clase que es tu plan
00:16:50
es decir por cada renglón nos está
00:16:53
regresando cada renglón en una tupla es
00:16:56
decir nosotros podríamos en vez de
00:16:58
imprimir el tipo imprimir raw y ahí
00:17:00
estaríamos imprimiendo cada uno de los
00:17:02
renglones
00:17:04
Ahora sí damos clic aquí en Nuevo y
00:17:06
vamos a ver qué imprime cada uno de los
00:17:09
renglones pero cada renglón es una dupla
00:17:11
entonces lo que nosotros queremos hacer
00:17:13
es sacar cada uno de los elementos es
00:17:15
decir el ID el segundo campo el nombre
00:17:18
tercero todos los campos es decir para
00:17:21
Acceder al primer campo que es el ID es
00:17:24
el campo 0 Este es el campo 1 y el
00:17:27
nombre del país por ejemplo es el campo
00:17:29
2 cómo accedemos a él con Row y entre
00:17:32
corchetes vamos a indicar dos en este
00:17:34
caso nosotros únicamente vamos a
00:17:37
imprimir el país si corremos el programa
00:17:40
ahora veremos que solo va a imprimir los
00:17:44
puros nombres de los países porque sólo
00:17:47
estamos imprimiendo un solo campo que es
00:17:49
el campo 2 Bueno de esta manera nosotros
00:17:53
podemos acceder a cada uno de los campos
00:17:55
y esto para que nos sirve bueno
00:17:57
recordarás que en el método crear
00:17:59
widgets hasta final lo que hicimos fue
00:18:02
insertar un elemento de manual este Esta
00:18:06
es la sentencia que nos permite insertar
00:18:08
un elemento Entonces lo vamos a quitar
00:18:11
de aquí no queremos insertar estos
00:18:13
elementos ahí quitamos esa línea y nos
00:18:16
regresamos a este mismo método nuevo que
00:18:19
tenemos por acá la vamos a poner ahí lo
00:18:23
que estamos haciendo es que al grid le
00:18:25
estamos insertando le estamos insertando
00:18:28
hacia el final y aquí el primer campo
00:18:31
que vamos a colocar aquí es el ID es
00:18:35
decir este primer valor este 1 es este
00:18:39
uno de acá pero donde obtenemos nosotros
00:18:41
el ID acá en esta consulta Bueno ese ID
00:18:45
realmente viene en el campo que aquí
00:18:48
tenemos como Row
00:18:51
en la posición 0
00:18:55
por tanto ahora el siguiente valor que
00:18:59
es este campo ISO 3 pues no está en la
00:19:02
posición 0 aquí no vamos a poner
00:19:04
directamente a RG sino el campo ISO 3
00:19:07
que está en la posición 1 y el siguiente
00:19:10
campo que es el nombre del país está en
00:19:13
la posición 2 luego la capital está en
00:19:19
la posición
00:19:21
3 y el currency code está en la posición
00:19:26
4 de esta manera lo que estamos haciendo
00:19:29
aquí es cargar los datos pero en el gris
00:19:33
ya no lo estamos imprimiendo vamos a
00:19:35
quitar este print que teníamos acá
00:19:37
porque ya no estamos imprimiendo estamos
00:19:39
poniendo los valores directamente en el
00:19:41
grid en el Tri View por tanto Bueno
00:19:45
cuando corremos ahora nuestro programa y
00:19:47
nosotros damos clic a Nuevo lo que
00:19:50
esperamos Es que aquí se carguen todos
00:19:52
los registros y ahí están aquí están los
00:19:56
registros que vienen de nuestra base de
00:19:58
datos Y como podemos ver Aquí está
00:20:00
nuestra base de datos y aquí está
00:20:03
nuestro programa y vemos que los campos
00:20:05
que los registros que están aquí ahora
00:20:07
se muestran en nuestro programa Pues
00:20:10
bien Esto que tenemos aquí realmente lo
00:20:12
vamos a colocar en otro método porque en
00:20:15
el método del botón nuevo no es donde
00:20:18
queremos nosotros llenar el gris sino
00:20:20
que vamos a crear un método que se llame
00:20:23
precisamente llena
00:20:26
Vamos a ponerle trivium
00:20:31
este va a ser nuestro método
00:20:35
o quién da datos puedes ponerle como tú
00:20:38
quieras llena datos llena registros no
00:20:41
sé este entonces este código lo vamos a
00:20:45
poner en este método Ahí está y en el
00:20:50
método nuevo nada más le vamos a poner
00:20:51
Paz para que no marque error y este
00:20:55
método llena datos Pues debe recibir
00:20:57
como primer parámetro self porque es un
00:20:59
miembro de nuestra clase Entonces
00:21:02
tenemos este método llena de datos
00:21:06
pero cuando vamos a mandar llamarlo
00:21:08
siempre que necesitemos llenar los datos
00:21:10
para empezar aquí en el init en el
00:21:13
constructor después del método crear
00:21:15
widgets Aquí vamos a mandar a llamar
00:21:18
self punto y vamos aquí a llamar a este
00:21:22
método que es llena datos de esa manera
00:21:25
cuando nosotros corramos el programa ya
00:21:28
van a aparecer los registros
00:21:32
así si tú corres tu programa ahora sí ya
00:21:35
tienes aquí los registros ya tenemos
00:21:37
lleno este grid Bueno hasta aquí vamos a
00:21:41
llegar en este vídeo en el próximo vídeo
00:21:42
vamos a ver cómo podremos insertar un
00:21:46
nuevo registro
00:21:47
[Música]