• No se han encontrado resultados

Programando Aplicaciones Web con Base de Datos y Python

N/A
N/A
Protected

Academic year: 2021

Share "Programando Aplicaciones Web con Base de Datos y Python"

Copied!
10
0
0

Texto completo

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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)

(6)

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

(7)

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

(8)

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( )

(9)

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

(10)

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

Referencias

Documento similar

U-Ranking cuenta con la colaboración del Ministe- rio de Universidades, al permitirnos el acceso al Sistema Integrado de Información Universitaria (SIIU). El SIIU es

El valor agregado 6 del indicador por universidad se pre- senta en una escala de 0 (mínimo valor obtenido por una universidad del sistema en ese indicador) a 100 (correspondiente

El segundo paso es elegir la comunidad autónoma o comunidades que se contemplan como lugares en los que cursar los estudios. Para ello, el usuario debe marcar las elegidas

El segundo paso es elegir la comunidad autónoma o comunidades que se contemplan como lugares en los que cursar los estudios. Para ello, el usuario debe marcar las elegidas

159 Diseña un programa que lea una cadena y un número entero k y nos diga si alguna de sus palabras tiene una longitud de k caracteres.. 160 Diseña un programa que lea una cadena y

Como lenguajes de programación se han usado Java para los endpoints, Python para obtener los datos de los sensores en la Raspberry y nodejs para la conexión con la base de datos y

Algunos aspectos claros donde se puede realizar más desarrollo son: añadir más comandos de voz al asistente y realizar diferentes análisis de los datos de la nariz con algoritmos de

queryMain = &#34;select   p.peptideid,   fi.filename,   sh.firstscan,   sh.lastscan,   sh.charge,   p.sequence,  sh.mass,    ps.scorevalue,