Cómo crear un CRUD en python. Parte 1: Estructura y clase
Para esta ocasión he pensado en hacer un tutorial que puede venir muy bien para todo el que está empezando con Python. Lo que haremos será crear un CRUD de una agenda que nos permitirá guardar contactos, listarlos, actualizar su información y eliminarlos.
Este CRUD funcionará sobre línea de comandos y para ello necesitaremos tener instalado Python y pip que es el administrador de paquetes de Python, para descargarlos podéis hacerlo desde los siguientes enlaces:
Instalar python3: https://www.python.org/
Instalar pip: https://pip.pypa.io/en/stable/installing/
Lo primero que haremos será crear un archivo llamado main.py, que será el archivo de entrada a nuestro CRUD y añadiremos un menú que se mostrará al usuario y que indicará las distintas opciones que tiene nuestra agenda.
Ahora añadimos las librerías que vamos a usar.
import os
import time
La librería os la utilizaremos para obtener funcionalidades del sistema y time para temas de fechas.
Después definimos una función que nos va a mostrar las distintas opciones de nuestra agenda.
def print_options():
print('AGENDA DE CONTACTOS')
print('*' * 50)
print('Selecciona una opción:')
print('[C]rear contacto')
print('[L]istado de contactos')
print('[M]odificar contacto')
print('[E]liminar contacto')
print('[B]uscar contacto')
print('[S]ALIR')
Observad que la primera letra de cada opción está entre corchetes, esto indicará el comando que debe usar el usuario para seleccionar una opción, por ejemplo para crear un contacto usaría el carácter C.
Después crearemos la función run() que será la función principal de nuestro CRUD.
def run():
print_options()
command = input()
command = command.upper()
if command == 'C':
pass
elif command == 'L':
pass
elif command == 'M':
pass
elif command == 'E':
pass
elif command == 'B':
pass
elif command == 'S':
os._exit(1)
else:
print('Comando inválido')
time.sleep(1)
run()
Aquí lo que hacemos es llamar a la función print_options() y con la función input() recuperamos el texto escrito en la consola por un usuario, después convertimos en mayúscula el texto introducido para que nuestro script acepte un comando tanto en mayúsculas como en minúsculas.
Después comprobamos que comando ha introducido el usuario y si no es un comando válido, mostramos un mensaje, dormimos el script durante un segundo con time.sleep(1) y volvemos a llamar a la función run() para mostrar el menú de nuevo.
A parte de eso podréis observar que en la cadena de ifs la mayoría de funciones tienen la palabra pass, esto significa que es una operación nula, vamos que no hace nada y con el comando 'S' llama a la función os._exit(1), que parará el script y volveremos a nuestra consola.
Por último para que funcione nuestro script escribiremos este código.
if __name__ == "__main__":
run()
Al usar if __name__ == "__main__": lo que hacemos es indicar al intérprete de Python que lo que debe ejecutar al lanzarse por consolar python main.py es lo que hay dentro de ello, en este caso la función run() que es la función principal del programa.
El siguiente paso que haremos será crear una clase para guardar nuestros contactos, crearemos una carpeta llamada classes y dentro de ella un archivo al que llamaremos contacts.py y al que añadiremos el siguiente código:
class Contact:
def __init__(self, name, surname, email, phone, birthday):
self._name = name
self._surname = surname
self._email = email
self._phone = phone
self._birthday = birthday
Como veis estamos declarando el nombre de la clase que será Contact y después añadimos el constructor en que el primer parámetro siempre es self (en el constructor y en cualquier método que definamos en una clase en python) que es una referencia de la clase.
Después añadimos los campos que queremos guardar y los asignamos a las variables de la clase que serán de tipo privada; estas se definen añadiendo un _ al inicio del nombre de la variable como se ve en el ejemplo.
Una vez hecho esto lo que haremos será definir las funciones getters y setters para poder acceder a los datos.
@property
def name(self):
return self._name
@name.setter
def name(self, name):
self._name = name
@property
def surname(self):
return self._surname
@surname.setter
def surname(self, surname):
self._surname = surname
@property
def email(self):
return self._email
@email.setter
def email(self, email):
self._email = email
@property
def phone(self):
return self._phone
@phone.setter
def phone(self, phone):
self._phone = phone
@property
def birthday(self):
return self._birthday
@birthday.setter
def birthday(self, birthday):
self._birthday = birthday
Como veis, para definir un getter, se debe añadir el decorador @property y después se añade el método por el que accederemos a los datos.
Para el caso de la definición del setter hay que añadir un decorador con el nombre del getter más .setter y después añadiremos la función en la que seteamos el dato.
Conclusiones
Ya tenemos la primera parte del tutorial para crear un CRUD con Python en el que hemos visto como crear una clase, ejecutar un programa desde la línea de comandos y recuperar parámetros por consola. En el siguiente tutorial veremos como crear contactos y listarlos en nuestro CRUD.
Para acceder a la primera parte de este tutorial podéis hacerlo desde mi GitHub y recordad que cualquier duda podéis ponerla en la caja de comentarios :).
Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.
Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.
Nos leemos 👋.