Taller
La magia del ORM!
Flisol 2017
David Pineda Osorio
& Bruno Garca
Clonar con git este taller
# git clone [Link]
# ejemplo simple: carpeta minibib
# ejemplo complejo: carpeta orm
# tarea para la casa: carpeta biblioteca
Abre el archivo [Link] para que te vayas
guiando.
ORM: Object relational mapping
Un ORM es un sistema que nos permite definir un
esquema de base de datos (schema) con sus
tablas y columnas. Adems nos provee las
herramientas para interactuar entre nuestro
sistema y un motor de base de datos.
Independiente del motor en particular.
Lenguaje Python 3
ORM SQLAlchemy
Database Postgres
IDE EMACS-Geany
Instalar las herramientas
sudo apt-get install python3.5 python3.5-dev
sudo pip3.5 install setuptools
sudo pip3.5 install virtualenv virtualenvwrapper
En archivo ~/.profile o ~/.bashrc poner la definicin del ambiente
virtual:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Proyectos
export VIRTUALENV_PYTHON=/usr/bin/python3.5
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.5
source /usr/local/bin/[Link]
source ~/.profile
Instalacin Db Postgres
apt-get install postgresql-9.4
cd /etc/postgresql/9.4/main
sudo nano pg_hba.conf
Configurar a:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all [Link]/32 md5
Crear base de datos y usuario
sudo su
su postgres
psql
postgres=# create database biblioteca;
CREATE DATABASE
postgres=# create role escritor;
CREATE ROLE
postgres=# alter role escritor with password 'versos+tristes';
ALTER ROLE
postgres=# grant all privileges on database biblioteca to escritor;
GRANT
postgres=# \connect biblioteca;
You are now connected to database "biblioteca" as user "postgres".
biblioteca=# alter role escritor with login;
ALTER ROLE
biblioteca=#
Crear ambiente virtual
# mkvirtualenv biblioteca
# workon biblioteca
# deactivate biblioteca
# mkdir biblioteca
# cd biblioteca
Crear archivos de trabajo
Usando comando touch
# touch <file>.py
La siguiente lista
-models
-db_session
-manager
-load_data
-validates
-generate_schema
Esquema de Database: Biblioteca
[Link]
Creacin de las tablas como objectos python
Tabla Clase Python (Base)
Cada clase requiere los campos de tabla:
{Numeric, String, Date, Boolean, etc}
Algunas validaciones necesarias:
{email, rut, etc}
create_db.py
Es el archivo que toma el complejo creado en
[Link] y nos genera un cdigo SQL que
crea la base de datos.
Al ejecutar, se conecta al engine Posgres y
crea el schema con sus tablas.
set schema 'biblioteca';
\dt
db_session.py
Es un script muy sencillo que permite levantar
la sesin a la base de dato y utilizarla para
interactuar con ella.
Desde otras partes se usa la instancia
'session'
[Link]
Desde el lado de la interfaz con nuestro sistema
podra considerarse el corazn de nuestro modulo
que implementa el ORM SqlAlchemy.
Nos permite definir y habilitar una serie de
funcionalidades que nos facilitaran el acceso a los
datos y a la edicin de las tablas con nueva
informacin.
Se compone de dos clases: SessionHandler y
SessionBiblioteca, esta ltima hereda de la anterior.
load_data.py
Es un script editado de manera estratgica
para leer de manera categrica y estructurada
una serie de tablas csv para cargarlas en
database.
Utiliza de manera exhaustiva la clase
DictReader del modulo csv, de la librera
estndar de Python.
Manos a la Obra!
Crear models con 3 tablas
Crear la base de datos
Crear manager
Crear load_data
Instalar mdulos adicionales que
usaremos
# pip install psycopg2
# pip install sqlalchemy
# git clone [Link]
# cd rutchile
# python [Link] develop
# git clone [Link]
# python [Link] develop
Referencias
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]