Django con PostgreSQL#
Una vez conectado al servidor podemos ejecutar comandos SQL. Además,
también hay comandos propios de psql:
Comando |
Acción |
|---|---|
|
Lista las bases de datos |
|
Muestra los usuarios |
|
Conectarse a otra BD |
|
Salir de psql |
|
Lista las tablas |
|
Información detallada del objeto |
|
Mejora el despliegue de tablas |
|
Abre un editor para consultas |
Crear un nuevo usuario:
CREATE ROLE ubuntu;
Podemos asignar al usuario ubuntu el rol de administrador:
ALTER USER ubuntu WITH SUPERUSER;
Permitir login:
ALTER ROLE ubuntu WITH LOGIN;
Cambiar o agregar password:
ALTER USER user_name WITH PASSWORD 'new_password';
Instalación de librerías#
Requerimos dos librerías para configurar PostgreSQL con Django:
psycopg2: conexión eficiente a PostgreSQL
django-environ: manejo de variables de entorno
Activa el ambiente y ejecuta:
pip install psycopg2
pip install django-environ
En caso de problemas con dependencias, usar:
pip install psycopg2-binary
Ejemplo de uso:
import psycopg2
conn = psycopg2.connect(
"dbname=django_bootstrap user=ubuntu password=thisissomeseucrepassword"
)
cur = conn.cursor()
cur.execute("SELECT CURRENT_DATE")
records = cur.fetchall()
print(records)
Configuración de Django#
Modifica el parámetro DATABASES en settings.py según la
documentación oficial.
Ejemplo:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "django_bootstrap",
"USER": "ubuntu",
"PASSWORD": "thisissomeseucrepassword",
"HOST": "127.0.0.1",
"PORT": "5432",
}
}
Ahora simplemente ejecutamos:
python manage.py migrate
Verifica que las tablas se crearon correctamente en la base de datos.
Autenticación de Pares#
Por defecto, PostgreSQL utiliza autenticación de tipo peer. Esto significa que
los programas que se conectan mediante sockets de Linux utilizan el usuario del sistema operativo.
Esto evita el uso de contraseñas, ya que la autenticación la realiza el sistema operativo.
Si necesitamos autenticación con contraseña, debemos modificar el archivo pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
Cambiar a:
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
Tipos de autenticación:
peer: confía en el usuario del sistemamd5: requiere contraseña (hash MD5)trust: no requiere autenticación (no recomendado)
Para editar este archivo:
sudo su postgres
Ejemplo de ubicación:
cd /etc/postgresql/14/main/
Después de modificar:
sudo systemctl restart postgresql
Backup#
Respaldo de base de datos:
pg_dump -U user_name -h remote_host -p remote_port name_of_database > backup.sql
Restaurar respaldo:
psql -h localhost -U user_name name_of_database < backup.sql
Tarea#
Utilizando django-environ, protege tu archivo settings.py para
usar variables de entorno en el password de la base de datos.
En producción, es recomendable que toda la configuración de ``DATABASES`` sea gestionada mediante variables de entorno.