Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Django II
Configurar gestores bases de datos
Django tiene la ventaja de ahorrarnos esas variaciones en la sintaxis SǪL, ya que sólo debemos configurar
el gestor que usaremos en nuestro proyecto y al momento de utilizar la clase “Model” de Django esta se
encargara de generar la instrucción SǪL correcta para el gestor que configuramos.
SǪLite es un gestor que funciona muy bien con Django, y es el gestor que viene por defecto debido que
este es muy liviano. No obstante, por motivos de seguridad, compatibilidad con Django y rendimiento
cuando la base de datos es grande, el gestor recomendado para usar con Django es PostgreSǪL.
En la clase de hoy configuraremos este gestor, sin embargo, la configuración de cualquier otro es muy
similar. También debemos tener en cuenta que usar un gestor diferente no cambiará la manera de trabajar
en Django, solo deberemos realizar algunas configuraciones adicionales.
Primero ingresaremos en la página https://www.postgresql.org, cliquearemos en
“Download” elegiremos el sistema operativo, y por último descargaremos el instalador.
Una vez termine la descarga, ejecutamos el instalador y sólo nos limitaremos a oprimir siguiente hasta que
lleguemos a esta ventana, acá colocaremos una contraseña que podemos recordar fácilmente. Es
importante recordar esta contraseña a que el gestor nos la pedirá y también será necesaria para la
configuración en Django.
Luego de ingresar la contraseña nos aparecerá la ventana donde podemos indicar el puerto que usará la
aplicación para la conexión, por defecto PostgreSǪL utiliza el 5432. Este numero de puerto es importante
recordarlo ya que será necesario al momento de la configuración en Django
Una vez ingresamos la contraseña y el puerto, haremos click en siguiente hasta que comience la
instalación. Una vez terminada becaremos el programa “pgAdmin4” e ingresaremos, nos aparecerá una
ventana la cual nos pedirá que ingresemos la contraseña que especificamos cuando instalamos el
programa. Es posible que nos pida varias veces esta contraseña, así que es realmente importante no
olvidarla.
Si desplegamos la pestaña con el nombre “Servers” veremos ya existe una base de datos,
esta es generada por el programa, pero crearemos nuestra propia base de datos
Para crear una nueva base de datos sólo debemos oprimir click derecho sobre “Databases” y seleccionar
“créate”. Luego nos aparecerá una ventana en la cual colocamos el nombre. Es posible cambiar el usuario
en el campo “Owner”, el usuario que coloquemos en este campo también es necesario para la
configuración en Django. En esta ocasión es recomendable mantener el usuario predeterminado luego de
colocar el nombre oprimimos el botón “Save”.
Observemos que ahora tenemos dos bases de datos, sin embargo, la nuestra no
tiene tablas. Ahora debemos conectar a Django con esta nueva base de datos. Y repetir
que realizamos en la clase pasada con SQLite3 para realizar la migración y crear
nuestras tablas
Como es costumbre comenzaremos entrando al CMD y activar anaconda con el comando “conda actívate
base”. Luego nos situaremos en la carpeta de nuestro proyecto con la instrucción “cd”.
Antes de comenzar con la configuración de nuestra base de datos PostgreSǪL necesitaremos instalar la
librería “psycopg2”, solo debemos escribir el comando “pip install psycopg2”. Ahora comenzaremos con la
configuración:
Primero debemos dirigirnos al documento “settings.py” y buscaremos la lista que tiene como nombre
“DATABASES”. Si nos fijamos dentro en esta lista encontraremos un diccionario que contiene la
configuración para la base de datos SǪLite3, la cual Django configuró automáticamente.
En el diccionario cambiaremos el valor de las llaves “ENGINE” y “NAME”, además agregaremos las tuplas
“USER”, “PASSWORD”, “HOST” y “DATABASE_PORT”
articulo.objects.filter(sección=‘ferreteria’)
Podemos observar que la consulta nos devolvió 2 objetos y nos indica que un objeto tiene la clave (5) y el
otro (7) y si nos fijamos en nuestra tabla, efectivamente los registro con la llave principal 5 y 7 son los que
pertenecen a la sección de ferretería. Sólo tenemos un problema, la consulta nos devolvió dos objetos
dentro de un “ǪuerrySet” y la información no se muestra no es legible.
Para que la información se muestre de una manera legible, debemos transformar los objetos dentro de la
ǪuerySet en una cadena de texto. Ya que estamos trabajando con la tabla “articulo” dentro de la clase
“articulo” crearemos la función que realice este procedimiento de la siguiente manera.
Ya podemos hacer las migraciones usando los comandos “python manage.py makemigrations” y “Python
manage.py migrate”
Aunque nos diga que no se han detectado cambios y que no se ha aplicado la migración, cada vez que
escribamos código nuevo en el “model” debemos realizar nuevamente las migraciones.
Ahora sólo resta ingresar nuevamente al Shell, realizar de nuevo la importación de la clase artículo y repetir
la consulta.
Observem os que ahora la in formación se m ues tra como especificamos en la fu nción y los datos
corresponden con los registros en nuestra base de datos:
También podemos agregar mas filtros. Nuestra tabla contiene dos registros con el nombre “silla” por lo tanto
si en el filtro especificamos que nos devuelva la información de los registros con el nombre “silla” nos
devolverá ambos registros como es de esperar. Pero si agregamos otro filtro mas como ejemplo la sección
“gamer” solamente nos devolverá los registros llamados “silla” y que la sección sea “gamer”.
Tal vez intuyamos que la manera de indicar estos criterios es usando la sintaxis “>=“ o “<=” y estaríamos
en lo correcto, sin embargo, en el Shell estos símbolos tienen otra función por lo tanto si intentamos
usarlos nos aparecerá un error, sólo en esta oportunidad que estamos en el shell debemos sustituir “>=”
por “__gte” y “<=“ por “__lte”, sólo será necesario sustituir los símbolos cuando estemos en el ámbito del
Shell:
En la consulta obtendremos todos los registros cuyo precio sea mayor o
igual a 500
Y como podemos intuir podemos realizar consultas con un rango de valores como criterio, por ejemplo,
obtengamos todos los productos con precios que estén en un rango mayor o igual a 300 y menor o igual a
700
Y como es de esperar, también podemos combinar criterios “igual que”, por ejemplo busquemos los
artículos donde el precio sea mayor a 220 y menor a 800 que pertenezcan a la sección “ferreteria”.
Notemos que el “mayor que” es __gt mientras que el “mayor o igual que” es __gte.
La sintaxis para realizar una consulta “OR” es un poco distinta, ya que podíamos verla como escribir dos
consultas a la vez, separadas por una barra (|). Para ejemplificar realizaremos una consulta que nos
muestre los datos de los registros cuya sección sea “hogar” o “deporte”
Y como es de esperar también podemos combinarlas con criterios “mayor que”. Como ejemplo, realicemos
una consulta que nos devuelva los registros donde el precio sea mayor a 200 y la sección sea “deporte” o
“hogar”