Cuestiones básicas
Jordi Funollet
jordi.f en ati.es
Jue Jun 7 15:41:30 CEST 2007
Javier Castrillo dixit:
> Generalmente mis alumnos (soy docente de adultos en FP) no quieren
> preguntar porque sienten que su pregunta es tan boba que temen que los
> tomen por tontos, lo cual, desde ya, es una actitud errónea y que
> tratamos de cambiar.
Si, yo también trato de cambiarla... en mi. ;-) Pero cuesta.
> Por eso creo que preguntaré las cuestiones más
> básicas de esta lista sin ponerme colorado. Allí va:
> Anteriormente desarrollé unas cositas en PHP con Apache como webserver
> y MySQL, o sea un trío clásico como JJ, Merlo y Alonso.
>
> Ahora, en Python:
Para simplificar, vamos a poner aparte Zope (solo conceptualmente; no discuto
sus méritos). Zope es todo un mundo (o por lo menos, un par de continentes).
En su momento fueron pioneros y se lo implementaron todo: el webserver, las
plantillas, la infrastructura de aplicaciones web e incluso su propia base de
datos orientada a objetos.
> Zope sería el webserver??? En tal caso, que diferencia habría con
> Apache + Mod_python
Apache, Lighttpd, ngix, Cherokee,... Son webservers, el programa que queda más
cerca del usuario. Recibe peticiones del navegador y devuelve "documentos".
Estos "documentos" pueden ser archivos html, o imágenes, o pdfs... o
documentos que no existen en el disco duro, sino que los genera un programa:
un CGI.
Aquí entra tu 'mod_python'. Arrancar y parar un programa de Python (una CGI)
cada vez que te piden un "documento" es muy costoso. Sale mas a cuenta
tenerlo cargado en memoria *dentro* del servidor web, que es lo que
hace 'mod_python'.
Pero esto es un poco rígido y te ata a un servidor web concreto. Otras
opciones más ligeras y flexibles són FastCGI y SCGI, que mantienen tu
programa arrancado todo el tiempo y responden a las peticiones que les pasa
el servidor web (el que tu prefieras).
> Y la db más usada, cuál es???
Por números, Mysql y PostgreSQL se llevan el gato al agua. La primera siempre
ha "vendido" más velocidad a costa de no comprobar que los datos sean
coherentes. En algunas aplicaciones no lo necesitas (aunque personalmente no
se me ocurre ninguna). Ahora ya puedes tener coherencia... pero tiene un
coste en velocidad.
PostgreSQL siempre ha sido indiscutiblemente robusta. Los últimos años han
trabajado mucho en la velocidad y parece que es comparable a Mysql. Pero que
nadie se tome esto muy a pecho, no quiero iniciar un "flame". :-)
Si te dedicas a la docencia dale un vistazo a SQLite. No necesita tener un
servidor arrancado y va toda la base de datos en un solo fichero. Vamos, que
tus alumnos pueden tener la base de datos en un USB.
> Plone, Turbogears y Django... qué son????
Plone está hecho sobre Zope; es un gestor de contenidos, una aplicación web
para editar y publicar documentos web.
> Porque para mi modesto entender " framework" es una palabra
> tan amplia como inexpugnable...
No se quién decía: un framework es un programa que "tapa agujeros". Hay que
escoger que agujeros tapar y cuales no.
Por ejemplo: yo no tengo ningún interés en aprender a gestionar las cookies
del navegador: que lo haga Django (o Turbogears, o Pylons, o Webpy). Ni ganas
de saber como se genera una página en HTML a partir del contenido de mi base
de datos. Que lo haga el framework.
Y yo, la mar de feliz, me centro en las partes de la aplicación que me
interesan, las que no son comunes a todas las aplicaciones web y no se pueden
extrapolar. Por ejemplo, la lógica de publicaciones y des-publicaciones de un
calendario.
> sqlobject y sqlalchemy, son bibliotecas?, Son formas de enlazar a db
> varias?
Son traductores: traducen tus objetos Python a querys comprensibles para la
base de datos. Generalmente, para unas cuantas bases de datos distintas.
> Y el lenguaje SQL, dónde entra en todo esto??? Va camino a
> desaparcer???
No, pero no hace falta escribir a mano un aburrido "SELECT" típico y tópico;
eso, que lo hagan los "object relational mappers". Si necesitas una query
fuera de lo habitual también terminarás escribiendo SQL.
> Gracias por tanto, perdón por tan poco
Se nota que te has esforzado por hacer preguntas claras y ordenadas. Se
agradece.
--
##############################
### Jordi Funollet
### http://www.terraquis.net
Más información sobre la lista de distribución Python-es