Re: Rescatar exception de base de datos

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Milton inostroza <minoztro(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Rescatar exception de base de datos
Date: 2005-01-23 14:51:12
Message-ID: 20050123145112.GB4406@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Sat, Jan 22, 2005 at 11:03:19PM -0300, Milton inostroza wrote:
> Hola lista: Saben estoy desarrollando una aplicación y necesito
> rescatar las exception que me generen las sentencias sql que estoy
> realizando, estoy utilizando pypgsql y no quiero utilizar if en el
> lenguaje que estoy ocupando (python) para manejar las posibles
> exception, quiero que según el mensaje de error que me genere el motor
> de base de datos postgreSQL el programa sea capaz de saber que hacer.

Hola,

Actualmente esto se puede hacer solo en funciones PL/pgSQL en la version
8.0. Antes que eso, no habia suficiente infraestructura para permitirlo
(a menos que construyeras un pseudo-driver que se encargara de hacerlo
por ti, el cual tendria que usar if para capturar los codigos de error,
y levantar excepciones en Python).

En el PL/pgSQL de 8.0 puedes construir bloques BEGIN/EXCEPTION/END en
los cuales capturar los errores, y actuar adecuadamente. Revisa la
documentacion. Obviamente esto te va a exigir usar PL/pgSQL para hacer
muchas cosas que de otra forma podrias hacer directamente ...

Otra alternativa seria usar SAVEPOINTs en tu aplicacion, pero entonces
tendrias que examinar los codigos de error, hacer ROLLBACK TO, y actuar
en consecuencia. Ahora que lo pienso, es posible que puedas hacer esto
con el pseudo-driver que te mencionaba mas arriba. (Observa que lo que
comparas son codigos de error (SQLSTATE, en realidad son "codigos de
estado") y no mensajes de error.

> por vuestra ayuda gracias, otra inquietud que me queda es si estoy
> bien en mi pensamiento

Yo diria que es algo razonable de pedir.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"Cómo ponemos nuestros dedos en la arcilla del otro. Eso es la amistad; jugar
al alfarero y ver qué formas se pueden sacar del otro" (C. Halloway en
La Feria de las Tinieblas, R. Bradbury)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jorge Pérez 2005-01-23 16:26:04 Tablas para ubicación geográfica
Previous Message Milton inostroza 2005-01-23 02:03:19 Rescatar exception de base de datos