[Pgsql-ayuda] fotos con Postgres

Gunnar Wolf gwolf@gwolf.cx
Tue, 6 May 2003 23:48:57 -0500


Alvaro Herrera dijo [Tue, May 06, 2003 at 11:11:31PM -0400]:
> On Tue, May 06, 2003 at 04:45:04PM -0500, Gunnar Wolf wrote:
> Gunnar,
> 
> Me suena tu nombre, de una lista de Mandrake Cooker o algo así?

Ummm... Lo dudo, yo nunca he usado Mandrake - Pero... Estoy en todo tipo
de listas de software libre ;-)

> > Ahora, va una duda que le hace más simple la vida al programador: Un
> > campo 'text' acepta cualquier cantidad de caracteres ASCII, ¿cierto?
> > Entonces... ¿Por qué no guardar la imagen tal cual, sin siquiera
> > codificar a Base64? Claro, hay que tener cuidado de no jalarla con un
> > 'select' desde psql o cosas similares, pero... ¿Alguna otra objeción?
> 
> Bueno, precisamente el problema es que text acepta caracteres ASCII (7
> bits) o lo que tenga tu codificación.  Si quisieras guardar la imagen
> directamente deberías usar BYTEA, que precisamente es para guardar
> secuencias de bytes.  Ahí tienes que tener cuidado con escapar el
> carácter ' al insertar, creo.  Y de vuelta algunas cosas vienen
> escapadas también y tienes que des-escaparlas (el byte 0, creo; el
> apóstrofe ', y no sé qué más).

Bueno... Claro, para evitar el asunto de los apóstrofes, yo prefiero
preparar e insertar en dos pasos separados - Uso Perl... Prefiero hacer:

$sth = $dbh->prepare('INSERT INTO tabla (val1, val2, val3) VALUES (?, ?, ?)');
$sth->execute($var1, $var2, $var3);

a hacer

$dbh->do("INSERT INTO tabla (val1, val2, val3) VALUES ('$var1','$var2','$var3')");

Es más código, pero resulta más limpio. Pero bueno, sí, el asunto de la
codificación, los \0 y demás pueden resultar incómodos.

Saludos,

-- 
Gunnar Wolf - gwolf@gwolf.cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF