G A L A
Programando Aplicaciones Web con Bases de Datos y Python
Sé diferente, intégrate…
Autor: Orlando Gutiérrez
Fecha: 01/01/2010
Mca041
Programando Aplicaciones Web con
Base de Datos y Python
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
ÍNDICE
LECCIÓN1 ARQUITECTURA DE BASES DE DATOS EN WEB ... 3
LECCIÓN2 CONFIGURANDO USUARIOS PARA LA WEB ... 3
LECCIÓN3 OPERACIÓN DE BASES DE DATOS EN WEB ... 3
LECCIÓN4 PASOS PARA CONSULTAR UNA BASES DE DATOS EN WEB ... 4
LECCIÓN5 ESTABLECIENDO Y CERRANDO UNA CONEXIÓN ... 4
LECCIÓN6 CONSULTANDO LA BASE DE DATOS... 4
LECCIÓN7 MANIPULANDO LOS DATOS DE LA CONSULTA ... 4
LECCIÓN8 MOSTRANDO LOS RESULTADOS DE LA CONSULTA AL USUARIO FINAL ... 5
LECCIÓN9 API DB-API ... 5
LECCIÓN10 MÓDULO DE PYTHON CON MYSQL ... 5
LECCIÓN11 MÓDULO DE PYTHON CON POSTGRESQL ... 5
LECCIÓN12 COMANDOS ACCESO A BASES DE DATOS EMBEBIDOS EN SCRIPTS PYTHON ... 6
LECCIÓN13 SEGURIDAD EN BASES DE DATOS WEB ... 6
LECCIÓN14 MODELO DE ABSTRACCIÓN DE DATOS ... 6
LECCIÓN15 IMPLEMENTANDO AUTENTICACIÓN COMBINANDO PYTHON Y BASES DE DATOS ... 6
LECCIÓN16 CONTROL DE ACCESO ... 7
LECCIÓN17 CONCEPTOS DE AUTENTICACIÓN BÁSICA ... 7
LECCIÓN18 AUTENTICACIÓN BÁSICA EN PYTHON ... 7
LECCIÓN19 AUTENTICACIÓN EN APACHE CON BASE DE DATOS ... 7
LECCIÓN20 TRANSACCIONES SEGURAS CON PHP Y BASE DE DATOS ... 8
LECCIÓN21 ENCRIPTACIÓN EN PYTHON ... 8
LECCIÓN22 PYTHON Y BASES DE DATOS EN PROYECTOS DE GRAN ESCALA ... 9
LECCIÓN23 DESARROLLO MULTI-CAPA, SEPARANDO LA LÓGICA DE NEGOCIOS DEL CONTENIDO DE LA PÁGINA WEB ... 9
LECCIÓN24 MANEJANDO ERRORES GENERADOS POR LAS BASES DE DATOS DESDE PYTHON ... 9
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
LECCIÓN1 ARQUITECTURA DE BASES DE DATOS EN WEB
ARQUITECTURA CLIENTE SERVIDOR ARQUITECTURA WEB CON Python + BD
LECCIÓN2 CONFIGURANDO USUARIOS PARA LA WEB
CONFIGURANDO USUARIOS PARA WEB
• PROGRAMÁTICAMENTE A TRAVÉS DE COMANDOS GRANT Y REVOKE
• PERMISOLOGÍA DIRECTA EN MYSQL O POSTGRESQL • COMMANDO DE CONEXIÓN CON USUARIO, PASSWORD Y BASE DE DATOS
COMANDOS GRANT Y REVOKE • GRANT privilegios [columnas] ON elemento
TO usuario
[WITH GRANT OPTION] • REVOKE privilegios [(columnas)] ON elemento
FROM usuario TIPOS DE PRIVILEGIOS
• SELECT (TABLAS Y COLUMNAS)
• INSERT (TABLAS Y COLUMNAS)
• UPDATE (TABLAS Y COLUMNAS)
• DELETE (TABLAS) • INDEX (TABLAS) • ALTER (TABLAS)
• CREATE (BASES DE DATOS Y TABLAS)
• DROP (BASES DE DATOS Y TABLAS) EJEMPLO DE GRANT Y REVOKE • GRANT ALL
ON *
TO ADMIN WITH GRANT OPTION
• REVOKE ALL
ON * FROM ADMIN UN USUARIO WEB
• PRIVILEGIOS DE SELECT, INSERT, UPDATE, DELETE
SOBRE UNA BASE DE DATOS
• GRANT SELECT , INSERT, UPDATE, DELETE
ON SISTORDCOMPRA.*
TO E022
LECCIÓN3 OPERACIÓN DE BASES DE DATOS EN WEB
OPERACIONES DE BASES DE DATOS EN WEB • INSERTANDO, INSERT COMMAND
INSERT INTO tabla [(cola, colb, …)] VALUES (vala, valb,…)
• SELECCIONANDO, SELECT COMMAND • ACTUALIZANDO, UPDATE COMMAND • ELIMINANDO, DELETE COMMAND
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
LECCIÓN4 PASOS PARA CONSULTAR UNA BASES DE DATOS EN WEB
CONSULTA BASES DE DATOS EN WEB
• PROCESAR LOS DATOS DE LA CONSULTA (EVITAR ERRORES U OPERACIONES SOSPECHOSAS) • CONEXIÓN BASE DE DATOS
• EJECUCIÓN COMANDOS (“QUERIES”) • PROCESAMIENTO DEL RESULTADO (ESTILO CURSOR)
• MOSTRAR LOS RESULTADOS DE LA CONSULTA AL USUARIO
LECCIÓN5 ESTABLECIENDO Y CERRANDO UNA CONEXIÓN
CONEXIONES
• EN PYTHON EL ACCESO A LAS BASES DE DATOS SE REALIZA A TRAVÉS DE MÓDULOS
• EL ACCESO A LAS BASES DE DATOS SE LOGRA A TRAVÉS DE LOS OBJETOS CONNECTION
• LOS OBJETOS CONNECTION PROVEEN DE UN CONJUNTO DE MÉTODOS
METODOS CONEXIONES
• CONSTRUCTOR (PARA CONECTAR) • CLOSE (CERRAR)
• COMMIT (ACEPTAR LA TRANSACCION)
• ROLLBACK (DESHACER LA TRANSACCION)
• CURSOR (CREACIÓN DE UN CURSOR PARA PROCESAR
OPERACIONES DE BASE DE DATOS)
LECCIÓN6 CONSULTANDO LA BASE DE DATOS
CONSULTANDO LA BASE DE DATOS
• SE REALIZA A TRAVÉS DE LOS OBJETOS CURSORES • EN LOS OBJETOS CURSORES SE PUEDE EJECUTAR CUALQUIER COMANDO SOPORTADO POR EL MANEJADOR DE BASE DE DATOS
LECCIÓN7 MANIPULANDO LOS DATOS DE LA CONSULTA
OBJETO CURSOR
• CONCEPTO DE CURSOR DE BASE DE DATOS
• CREADO A TRAVÉS DEL OBJETO CONNECTION CON EL MÉTODO CURSOR
• SI EL MANEJADOR DE BASE DE DATOS NO SOPORTA CURSORES EL APIDB DE PYTHON LO EMULA ATRIBUTOS CURSOR
• DESCRIPCION: SOLO LECTURA, MUESTRA LAS
PROPIEDADES DEL CURSOR
• ROWCOUNT: NÚMERO DE REGISTROS PROCESADOS EN
EL ÚLTIMO COMANDO MÉTODOS CURSOR
• CALLPROC (NOMBRE,[PARAMETROS]):
PARA EJECUTAR “STORED PROCEDURES”
• CLOSE: CIERRA EL CURSOR
• EXECUTE (CONSULTA, [PARAMETROS]);
EJECUTA LA CONSULTA SQL
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
CURSOR
• FETCHMANY: DEVUELVE VARIOS REGISTROS Y LOS
COLOCA EN UN ARREGLO
• FETCHALL: LOS DEVUELVE TODOS
LECCIÓN8 MOSTRANDO LOS RESULTADOS DE LA CONSULTA AL USUARIO FINAL
MOSTRANDO RESULTADOS
• UNA VEZ ALMACENADOS EN VARIABLES PYTHON, IGUAL A CUALQUIER SCRIPT
• RECORDAR FORMATEO
• COMBINAR TEXTO HTML CON RESULTADOS DE
CONSULTAS O COMANDOS DE BASE DE DATOS DENTRO DE PYTHON
LECCIÓN9 API DB-API
APIDB
• API STANDARD PARA UNIFICAR LAS INTERFACES DE LOS MÓDULOS DE PYTHON
• LOS DESARROLLADORES DE LOS MÓDULOS DE INTERFACES DE BASES DE DATOS SIGUEN ESTE API
• CONTIENE UN CONJUNTO DE CLASES, CONSTRUCTORES, ATRIBUTOS Y MÉTODOS ESTANDARIZADOS.
ESPECIFICACIONES APIDB
• http://www.python.org/dev/peps/pep-0249/
• IDENTIFICADOR DE DESARROLLO:
PEP 249 -- Python Database API Specification v2.0 API • VERSIÓN: 2.0
• ULTIMA ACTUALIZACIÓN: 03/03/2008 SECCIONES APIDB
• INTERFAZ CON EL MODULO • CLASE CONNECTION • CLASE CURSOR • TIPOS DE DATOS
• NOTAS DE IMPLEMENTACION • EXTENSIONES
LECCIÓN10 MÓDULO DE PYTHON CON MYSQL
MODULO DE PYTHON CON MYSQL • URL http://wiki.python.org/moin/MySQL
• DOS DB API 2.0 CONOCIDOS
• MySql FOR PYTHON (LIBRE)
http://sourceforge.net/projects/mysql-python
• mxODBC (ODBC, TECNOLOGÍA MICROSOFT)
http://www.egenix.com/products/python/mxODBC/
NOTA: TAMBIÉN EXISTE UN DRIVER DISPONIBLE PARA PYDO (PHYTON DATA OBJECTS)
LECCIÓN11 MÓDULO DE PYTHON CON POSTGRESQL
MODULO DE PYTHON CON POSTGRESQL • URL http://wiki.python.org/moin/PostgreSQL
• CUATRO DB API 2.0 CONOCIDOS • PYPGSQL (LIBRE)
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
• mxODBC (ODBC, TECNOLOGÍA MICROSOFT)
http://www.egenix.com/products/python/mxODBC/
NOTA: TAMBIÉN EXISTEN TRES DRIVERS DISPONIBLES PARA PYDO (PHYTON DATA OBJECTS)
• PYGRESQL
http://www.pygresql.org/
• psycopg
http://initd.org/software/initd/psycopg
LECCIÓN12 COMANDOS ACCESO A BASES DE DATOS EMBEBIDOS EN SCRIPTS PYTHON
COMANDOS EMBEBIDOS
• UNA VEZ IMPORTADO EL MODULO APIDB E INSTANCIADO EL OBJETO, SE PUEDE EJECUTAR CUALQUIER FUNCIÓN DE LA BASE DE DATOS COMO CUALQUIER OTRA FUNCIÓN DE PYTHON
• ESTILO PROGRAMACIÓN DE CURSORES
LECCIÓN13 SEGURIDAD EN BASES DE DATOS WEB
SEGURIDAD EN BASES DE DATOS WEB
• USUARIOS WEB, NO DEBERÍAN TENER PERMISOLOGÍA GRANT • SELECT PARA TABLAS DE CATÁLOGOS
• INSERT PARA TABLAS DE ÓRDENES DE COMPRAS • VALIDAR TODOS LOS DATOS ANTES DE EJECUTAR LOS COMANDOS DE BASE DE DATOS
• SSL CUANDO SE TRANSMITAN PASSWORDS
LECCIÓN14 MODELO DE ABSTRACCIÓN DE DATOS
MODELO DE ABSTRACCIÓN DE DATOS
• SEPARACIÓN CAPA DE DATOS DE LA LÓGICA DEL NEGOCIO Y DE LA PRESENTACIÓN
• FUNCIONES (API) QUE ENCAPSULAN EN MANEJADOR • CAMBIOS INMEDIATOS AL CAMBIAR LA BASE DE DATOS
• PROGRAMADORES WEB NO DEBERÍAN CONOCER TECNOLOGÍA ASOCIADA CAPA DE DATOS
•DETALLES DE MANEJADOR
• SOPORTE MÚLTIPLES MANEJADORES VS. TECNOLOGÍA ODBC
• PYTHON SOPORTA LA MAYORÍA DE LOS MANEJADORES COMERCIALES
LECCIÓN15 IMPLEMENTANDO AUTENTICACIÓN COMBINANDO PYTHON Y BASES DE DATOS
AUTENTICACIÓN PYTHON + BASES DE DATOS •IDENTIFICANDO LOS VISITANTES A LAS PÁGINAS WEB
• IMPLEMENTANDO EL CONTROL DE ACCESO
• DIFERENCIAS ENTRE AUTENTICACIÓN Y AUTORIZACIÓN • AUTENTICACIÓN BÁSICA
• AUTENTICACIÓN EN EL SERVIDOR WEB • AUTENTICACIÓN PERSONALIZADA
IDENTIFICANDO VISITANTES
• REGISTRANDO INFORMACIÓN DEL USUARIO • COOKIES (LADO DEL CLIENTE)
• SESSIONES
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
LECCIÓN16 CONTROL DE ACCESO
CONTROL DE ACCESO, SENCILLO HTML • CAMPOS USERNAME, PASSWORD • TAGS HTML CAMPOS PASSWORD <input type = password …> • CÓDIGO PYTHON HARD-CODE
CONTROL DE ACCCESO, BASE DE DATOS • CAMPOS USERNAME, PASSWORD • ALMACENAMIENTO EN BASE DE DATOS • ALMACENAMIENTO ENCRIPTADO INSERT INTO usuarios VALUES (‘usuario’, password(‘clave’))
• FUNCIONES CIFRADO (ENCRIPTAMIENTO) LIBRERÍA PYTHON
LECCIÓN17 CONCEPTOS DE AUTENTICACIÓN BÁSICA
AUTENTICACIÓN BÁSICA • OFRECIDA POR HTTP
• SÓLO SE SOLICITA UNA VEZ Y MIENTRAS EL NAVEGADOR SE ENCUENTRE ACTIVO FUNCIONA. NO LA SOLICITA PÁGINA POR PÁGINA
• ESTOS MECANISMOS PUEDEN SER LEVANTADOS DIRECTAMENTE EN EL SERVIDOR O A TRAVÉS DE PYTHON (INTERFAZ CGI)
IMPLEMENTACIÓN AUTENTICACIÓN BÁSICA • OFRECIDA POR HTTP
• HTTP 1.1 , AUTENTICACIÓN DIGEST
• AUTHENTICATION DIGEST, MD5 (SOPORTADO POR MUCHOS SERVIDORES, PERO NO POR NAVEGADORES)
LECCIÓN18 AUTENTICACIÓN BÁSICA EN PYTHON
AUTENTICACIÓN BÁSICA EN PYTHON • A TRAVÉS DE LA LIBRERÍA urlib2
• OBJETOS HTTPPasswordMgr • OBJETO AbstractBasicAuthHandler • OBJETO HTTPBasicAuthHandler • OBJETO ProxyBasicAuthHandler AUTENTICACIÓN DIGEST EN PYTHON • A TRAVÉS DE LA LIBRERÍA urlib2
• OBJETOS HTTPPasswordMgr • OBJETO AbstractDigestAuthHandler • OBJETO HTTPDigestAuthHandler • OBJETO ProxyDigestAuthHandler
LECCIÓN19 AUTENTICACIÓN EN APACHE CON BASE DE DATOS
AUTENTICACIÓN BÁSICA APACHE • FUERA DE PYTHON
• DEPENDIENTE DEL SERVIDOR WEB • ARCHIVOS .htaccess
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
LECCIÓN20 TRANSACCIONES SEGURAS CON PHP Y BASE DE DATOS
TRANSACCIONES WEB TRANSACCIONES SEGURAS •SSL (SECURITY SOCKET LAYERS) • FIRMAS DIGITALES (DSL) • ENCRIPTACIÓN EN PYTHON
• ENCRIPTACIÓN EN BASES DE DATOS • SEGURIDAD EN WEB
LECCIÓN21 ENCRIPTACIÓN EN PYTHON
SERVICIOS DE CIFRADO (ENCRIPTACIÓN) EN PYTHON • HMAC
• MD5 • SHA • MPZ • ROTOR
• NO SE DISTRIBUYEN CON PYTHON • SE PUEDEN DESCARGAR EN
http://www.amk.ca/python/code/crypto.html
OBJETO HMAC
• hmac -- Keyed-Hashing for Message Authentication • Implementa el algoritmo HMAC descrito por RFC 2104. • new( key[, msg[, digestmod]]) // CONSTRUCTOR MÉTODOS • update( msg) • digest( ) • hexdigest( ) • copy( ) OBJETO MD5
• md5 -- MD5 message digest algorithm
• Implementa la interfaz RSA‘ al algoritmo de procesamiento de mensajes MD5 (Internet RFC 1321)
• new( [arg]) // CONSTRUCTOR MÉTODOS • update( msg) • digest( ) • hexdigest( ) • copy( ) OBJETO SHA
• sha -- SHA-1 message digest algorithm
• Implementa la interfaz NIST al algoritmo de hashing seguro SHA-1 (Internet RFC 1321)
• new( [string]) // CONSTRUCTOR MÉTODOS • update( msg) • digest( ) • hexdigest( ) • copy( )
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
LECCIÓN22 PYTHON Y BASES DE DATOS EN PROYECTOS DE GRAN ESCALA
PROYECTOS GRAN ESCALA • DISEÑO MODULAR • “SOFTWARE” MULTI-CAPAS
• DESARROLLO ORIENTADO POR OBJETOS • CAPA DE DATOS (FACHADA CON UN DBMS)
• CAPA DE LÓGICA (MODULOS PYTHON, UNA FACHADA DE INTERFAZ ÚNICA)
• CAPA DE PRESENTACIÓN, DISEÑO GRÁFICO EN HTML
PASOS DESARROLLO, METODOLOGÍA
• APLICAR PRINCIPIOS DE INGENIERÍA DE “SOFTWARE” • REALIZAR LA PLANIFICACIÓN DEL PROYECTO Y EL CONTROL DEL MISMO
• REUTILIZACIÓN DEL CÓDIGO • ESCRITURA DE CÓDIGO MANTENIBLE • IMPLEMENTAR CONTROL DE VERSIONES • ESCOGER UN AMBIENTE DE DESARROLLO • DOCUMENTAR EL PROYECTO
• DESARROLLAR PROTOTÍPICO E INCREMENTAL • SEPARAR AL MENOS EN TRES CAPAS
• OPTIMIZAR EL CÓDIGO IDE´s PARA PYTHON
• PyDev 0.9.8.1 http://pydev.sourceforge.net/ • Eric3 3.7.1 http://www.die-offenbachs.de/detlev/eric.html • Boa Constructor 0.4.4 http://boa-constructor.sourceforge.net/ • BlackAdder 1.1 http://www.thekompany.com/products/blackadder/ • Komodo 3.1 http://www.activestate.com/Products/komodo_ide/index.mhtml
LECCIÓN23 DESARROLLO MULTI-CAPA, SEPARANDO LA LÓGICA DE NEGOCIOS DEL CONTENIDO DE LA PÁGINA WEB
EVOLUCIÓN (“STAND-ALONE”) EVOLUCIÓN (“CLIENT-SERVER”) EVOLUCIÓN (“THREE-TIER”) EVOLUCIÓN (“MULTI-TIER”)
LECCIÓN24 MANEJANDO ERRORES GENERADOS POR LAS BASES DE DATOS DESDE PYTHON
EXCEPCIONES DEL APIDB
• SON CLASES DEL MÓDULO EXCEPTION • WARNING • ERROR • INTERFACEERROR • DATABASEERROR • DATAERROR • OPERATIONALERROR • INTEGRITYERROR • INTERNALERROR • PROGRAMMINGERROR
G A L A
Programando Aplicaciones Web con Bases de Datos y Python
• NOTSUPPORTEDERROR
LECCIÓN25 EJEMPLOS DE APLICACIONES
EJEMPLOS APLICACIONES
• CARRO DE COMPRAS (E-COMMERCE) • ADMINISTRADOR DE CONTENIDOS • PAQUETE DE E-MAIL EN WEB • CONSTRUYENDO FOROS EN WEB