Sei sulla pagina 1di 17

Taller

La magia del ORM!


Flisol 2017
David Pineda Osorio
& Bruno Garca
Clonar con git este taller
# git clone https://gitlab.com/pineiden/sqlalchemy_taller
# ejemplo simple: carpeta minibib
# ejemplo complejo: carpeta orm
# tarea para la casa: carpeta biblioteca

Abre el archivo tallersqlalchemy.pdf 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/virtualenvwrapper.sh

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 127.0.0.1/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
Models.py
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
models.py 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'
Manager.py
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 https://github.com/dpineiden/rutchile
# cd rutchile
# python setup.py develop
# git clone https://github.com/dpineiden/number2name
# python setup.py develop
Referencias
https://www.python.org/
https://www.sqlalchemy.org/
https://www.postgresql.org/
https://gitlab.com/pineiden/sqlalchemy_taller
https://github.com/dpineiden/rutchile
https://github.com/dpineiden/number2name

Potrebbero piacerti anche