Re: Consulta PyReplica

From: Javier Fritz Alsite <jfritz(dot)aliste(at)gmail(dot)com>
To: Mariano Reingart <reingart(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Consulta PyReplica
Date: 2009-10-02 21:32:24
Message-ID: 4AC67168.9050109@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
lo estoy probando en este instante te cuento el resultado<br>
Gracias :)<br>
<br>
<br>
<br>
Mariano Reingart wrote:
<blockquote
cite="mid:5aebd8250910021428q5fd1e675r136ab24fa854a0e8(at)mail(dot)gmail(dot)com"
type="cite">2009/10/2 Javier Fritz Aliste <span dir="ltr">&lt;<a
moz-do-not-send="true" href="mailto:javier(dot)fritz(at)lanix(dot)cl">javier(dot)fritz(at)lanix(dot)cl</a>&gt;</span><br>
<div class="gmail_quote">
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">Hola.<br>
<br>
&nbsp;&nbsp;&nbsp; Como estan, hace algun tiempo pedi ayuda sobre una soluci&oacute;n de
replicaci&oacute;n, he optado por PyReplica , y tengo el siguiente
problema.quizas de simple la soluci&oacute;n, <br>
<br>
&nbsp;&nbsp;&nbsp; Tengo 3 servidores, cada uno tiene conexi&oacute;n con dos maestros
remotos, funciona aceptablemente bien, esta montado en servidores con
salida a internet con un trafico aun de prueba.<br>
<br>
&nbsp;&nbsp;&nbsp; Al grano, al&nbsp; realizar una insercion en una tabla que posee un
campo bigint, el triger esta capturando el query pero para el valor de
este campo lo concatena con "L", no se si esto es correcto, ya que al
ejectuar este query, se por el esclavo&nbsp; pyreplica o extrayendolo
manualmente y ejecutandolo sobre la base genera el error.<br>
<br>
</div>
</blockquote>
<div><br>
Hola Javier, parece ser un tema de conversi&oacute;n entre postgresql y
python, una solucion podria ser modificar el c&oacute;digo del disparador en
plpython para que detecte los bigint de pg (long en python) y no le
agregue la L al convertirlos para el query sql:<br>
<br>
&nbsp; # function to convert value from python to postgres representation<br>
&nbsp; def mogrify(v):<br>
&nbsp;&nbsp;&nbsp; if v is None: return 'NULL' <br>
<span style="color: rgb(0, 153, 0);">&nbsp;&nbsp;&nbsp; if isinstance(v,long):
return str(v) # no agregar L a long (bigint)</span><br>
&nbsp;&nbsp;&nbsp; if isinstance(v,basestring): <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = repr(v)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not r.startswith('\"'):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return r<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # postgres doesn't support ", replace and escape '<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "'%s'" % r.replace("'","\\'")[1:-1]<br>
&nbsp;&nbsp;&nbsp; return "'%s'" % repr(v) # to get rid of bool that are passed as
ints (solved in pg8.3)<br>
<br>
Lo que hay que agregar es la linea verde despues de if v is None..
(respetando la identaci&oacute;n):<br>
<span style="color: rgb(0, 153, 0);"><span
style="color: rgb(0, 0, 0);">if isinstance(v,long): return str(v)</span><br>
<br>
</span>No lo prob&eacute; pero tendr&iacute;a que funcionar, cualquier cosa avisame<br>
Sds<br>
Mariano<br>
</div>
</div>
</blockquote>
<br>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 3.1 KB

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Manuel Alejandro Estevez Fernandez 2009-10-03 17:40:58 Re: Agilizar consultas sobre fechas
Previous Message Mariano Reingart 2009-10-02 21:28:44 Re: Consulta PyReplica