Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar]
Server Side \ Python y Postgresql
Server Side
Python y Postgresql

Este artículo ha sido consultado en 1,253 ocasiones.

Python

Python es un lenguaje que cada vez recibe más atención, es versátil y poderoso, con un gran soporte hacia la programación orientada a objetos (POO) y quizás posea la sintaxis más limpia del mundo, en constrate a la de Perl que posee una sintaxis (en mi opinión) mal diseñada. Sin embargo, el gran obstáculo al acercarnos a Python es la pobre documentación que existe acerca de él, es como como aquella navidad en la que recibimos una fabulosa autopista eléctrica pero las instrucciones de armado y uso no aparecieron por ningún lado ;-).

Este mini-HOWTO explica como conectar un script CGI de Python con Postgresql usando la interface Psycopg y el módulo CGI de Python. La configuración de de Postgresql, la creación de la base de datos y la tabla de pruebas, es idéntica a la que ya revisamos al conectar PostgreSQl con Perl asi que no la repetiré aquí. También supongo que Apache está arriba y trabajando. No importa si estamos usando Apache o Apache-perl, ambos trabajan con Python perfectamente. Bien, instalemos Python y Psycopg:

# apt-get install python2.3-psycopg

Como usuario del Webserver (nobody, www-data) creamos el directorio python:

webserveruser$ mkdir /var/www/python

Como root creamos el archivo pycgi.conf en /etc/apache:

# mc -e /etc/apache/pycgi.conf

Adentro debemos poner:

Alias /python/ /var/www/python/
<Directory /var/www/python>
AllowOverride All
AddHandler cgi-script .py
Options ExecCGI Includes FollowSymlinks
Order Allow,Deny
Allow from All
</Directory>

Y al final del /etc/apache/httpd.conf:

# CGI para Python
Include /etc/apache/pycgi.conf

Reiniciamos apache:

# /etc/init.d/apache restart

Como usuario del webserver creamos el archivo pgsql.py:

wwsuer$ mc -e /var/www/python/pgsql.py

El archivo python debe contener la siguientes líneas:

#!/usr/bin/python

import cgitb; cgitb.enable();
import sys
import cgi
import psycopg

dsn = "dbname=DBTEST host=localhost port=5432 user=postgres password=mex3004"

con = psycopg.connect(dsn)

cur = con.cursor()

s = "SELECT * FROM tb_usuarios"

# Dile al navegador el tipo de contenido
print "Content-Type: text/html\n\n"

# Pinta la cabeza html
print """<HTML><HEAD>
<TITLE>Python con Postgresql</TITLE>
</HEAD><BODY>"""
print "<table with='100%' align='center'>"

PYGS = "Hola Python y Postgresql!! (psycopg)"
print "<tr><td colspan='4'> Saludos " + PYGS + "</td></tr>" # pinta un saludo ñoño
form=cgi.FieldStorage() #preparo la toma de variables de ambiente get o post
if not form.getvalue("b"):
valb = "no hay valor"
else:
valb = form.getvalue("b")

if not form.getvalue("a"):
vala = "no hay valor"
else:
vala = form.getvalue("a")

print "%s -- %s" % (vala, valb)

cur.execute(s)

r = cur.fetchone()

while r != None:

ID = int(r[0])
nombre = str(r[1])
email = str(r[2])

# print cada renglón
print "<tr><td><a href='editar.py?id=%s&action=1'>Editar</a></td><td> %s | %s </td><td><a href='editar.py?id=%s&action=2'>Borrar</a></td></tr>" % (ID, nombre, email, ID)
r = cur.fetchone()


print "</table>"

# limpio el cursor
cur.close()

# cierro la conexion
con.close()

# termina SQL.

print "</BODY></HTML>" # termina html
# fin del archivo pgsql.py

Damos permisos de ejecución a este archivo:

webserveruser$ chmod 744 /var/www/python/pgsql.py

Nos colocamos con mozilla en http://localhost/python/pgsql.py y abracadabra!! nos mostrará la tabla tb_usuarios de la base de datos DBTEST. La función form.getvalue("b") toma la variable b que el enviamos por get en el URL, por ejemplo, si ponemos en mozilla:

http://localhost/python/pgsql.py?b=python-y-pgsql&a=Hello

pintara python-y-pgsql y Hello en lugar de "sin valor" en la variable b y a. Para borrar o actualizar un registro de la tabla sólo debemes crear un script editar.py que tome las variables id y action que enviamos por el URL y si action=1 actualizamos y si action=2 borramos.

Y eso es todo, sólo nos queda recordar que en python la identación es esencial. Preguntas y respuesta abajo.


Última actualización: 2007-04-29 10:56:58-05



ir arriba
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework CSS GNU Hacker