Custom Search
Bloggers Activos
Dani people's vaio chilicuil
Una Canción Triste vendaval
¡Lo hemos conseguido! der_teufel
Log continuacion del curso de BD.. rnstux
F.A.Q. del borracho mandrake
Logotipo de Apple mandrake
Hola mundo en 366 lenguajes de programación mandrake
Descargando videos de Youtube como todo un master chilicuil
Impedir ataques de dic. por ssh mandrake
Log de la platica de BD en IRC rnstux
Last Download
Segunda Fundación
Segunda Fundación
Continuación del Curso de DB
rnstux
FreeBSD hacking (Kernel Modules Programming)
vendaval
ZFS - A Smashing Hit
asarch
Primer Curso de BD en IRC
rnstux
Powered by Blender!
rnstux
Seguimiento de Cuba...
vendaval
Screencast
aarkerio
Nokia liberará a Symbian
asarch
Salva un libro
aarkerio
Bolsa de trabajo
asarch
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
Asesorías Gratuitas
Asesorías Gratuitas

Hacktivism

LinuxChix button

Server Side \ Python y Postgresql
Server Side
Python y Postgresql

Este artículo ha sido consultado en 964 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

Printable version

Add comment:



Captcha




Que estas haciendo?
luzbelluzbel está:
Reviviendo mi primer compu (Celeron 400 Mhz)con NetBSD 4.0
3 minutes ago

chilicuilchilicuil está:
bambi, bambi, te espero
3 hours, 35 minutes ago

starkadstarkad está:
ayer lo baje y estuve jugando el wesnoth, deja le agarro la onda y vemos
5 hours, 56 minutes ago

chilicuilchilicuil está:
entonces que pedo, quien se rifa la reta de wesnoth conmigo?
18 hours, 18 minutes ago

rnstuxrnstux está:
downloading
18 hours, 28 minutes ago

rnstuxrnstux está:
buscaminas???
18 hours, 28 minutes ago

Que estuvimos haciendo >>
Chipotle Software

Uso OpenOffice.org
Una vez a la semana
Nunca
Uso otra ofimática
Todos los días
Una vez al mes
Rapiditas
Problemas de Lenguaje en niños
13569 lecturas
Anticoncepción de Emergencia
11327 lecturas
Sexualidad infantil y juvenil
11005 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
8563 lecturas
Sinapsis y exocitosis
8030 lecturas
Mi primer CakePHP, mmmmm cakeee
6276 lecturas
Evolución filética en las hepáticas
5887 lecturas
BASH y Primeros Comandos
4853 lecturas
CakePHP II Active Record
4611 lecturas
Cómo convertirse en hacker
4206 lecturas
Add to Technorati Favorites

ir arriba
Ubi dubium ibi libertas. Donde hay duda hay libertad. Proverbio Romano

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer