Sé diferente, intégrate Mca041 Programando Aplicaciones Web con Base de Datos y Python Autor: Orlando Gutiérrez Fecha: 01/01/2010 Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 1
Í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 LECCIÓN25 EJEMPLOS DE APLICACIONES... 10 Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 2
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 Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 3
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 FETCHONE: OBTIENE EL SIGUIENTE ELEMENTO DEL Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 4
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) http://pypgsql.sourceforge.net Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 5
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 EN UNA BASE DE DATOS EN EL SERVIDOR WEB Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 6
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 COMANDO htpasswd Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 7
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( ) Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 8
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 Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 9
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 Prohibida la reproducción total o parcial, derechos reservados, Instituto Gala de Venezuela 10