<html><head></head><body bgcolor="#FFFFFF"><div>Mas isso eu já consigo sem problemas.</div><div>A questão é, como conseguir passar a função do primeiro script (que pus no email) e conseguir atribuir a uma variável o valor resultante do NEW.email...</div><div><br></div><div>Obrigado!</div><div><br>Sent from my iPhone</div><div><br>On 10/07/2012, at 07:46, Eloi Ribeiro <<a href="mailto:eloi.ribeiro@gmail.com">eloi.ribeiro@gmail.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div>Em python podes-te ligar a PostgreSQL e realizar uma consulta:<div><br><div><div>-----------------------------------------</div><div> import psycopg2</div><div> import getpass</div><div> password = getpass.getpass('Senha: ')</div>
<div> conn = psycopg2.connect("dbname='nome_bd' user='utilizador' host='host' password='%s'" % password);</div><div> cur = conn.cursor()</div><div> cur.execute("SELECT campo1, campo2 FROM tabela WHERE campo = 'blah' ")</div>
<div> rows = cur.fetchall()</div><div> for row in rows:</div><div> campo1 = row[0]</div><div> campo2 = row[1]</div><div> print campo1, campo2</div><div>-----------------------------------------</div>
<div><br></div><div>Espero que seja útil.</div><div>Cumprimentos,</div><div><br></div>Eloi Ribeiro<br>GIS Analyst<br>39,45º -0,40º<br><a href="http://flavors.me/eloiribeiro" target="_blank">flavors.me/eloiribeiro</a><br>
<br><br><div class="gmail_quote">No dia 9 de Julho de 2012 23:55, Filipe Brandão <span dir="ltr"><<a href="mailto:fgbrandao@emepc-portugal.org" target="_blank">fgbrandao@emepc-portugal.org</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Boa noite.<br><br>Gostaria de saber se alguém me pode ajudar num problema que estou a tentar resolver.<br>Cenário: Tenho uma BD com duas tabelas. A primeira só tem uma linha, que se pode editar (update) via user form. Cada vez que essa mesma linha é editada, é populada a 2ª tabela (com um trigger que dispara sempre que há um update na 1ª tabela), de modo incremental (insert). Deste modo tenho um historial de todas as interacções entre utilizadores e a 1ª tabela.<br>
Criei outro trigger para enviar emails aos users que interajam com a 1ª tabela (um dos campos que preenchem é um endereço de email), também depois de haver updates nessa mesma 1ª tabela. Este trigger dispara um script em python que faz esse mesmo envio.<br>
Preciso ainda que cada vez que haja um envio, este seja feito para o ultimo endereço a ser inserido na 2ª tabela (tenho um atributo com datatype serial, para saber sempre qual a ultima linha da tabela). Até aqui tudo ok.<br>
Agora o problema. Quando há um update na 1ª tabela os dois triggers disparam e correm, mas no caso do envio de emails é sempre enviado o email para o <b><u>ultimo registo da tabela antes desse mesmo update</u></b>!<br>Ou seja, há uma transacção em curso e o trigger "não vê" o ultimo registo uma vez que ainda não foi feito um commit na BD, que só acontece depois de a transacção acabar.<br>
Já vi que não é possível disparar triggers depois de triggers, que não consigo fazer commit a meio de uma transacção, etc.<br>Como poderei dar a volta a isto?<br>Aquilo que me pareceu mais óbvio era aproveitar o primeiro trigger de que vos falei, uma vez que nele consigo ir buscar os novos valores da 1ª tabela (que depois são inseridos na 2ª). Mas não consegui programar o script em python para incluir essa mesma função.<br>
A função é basicamente isto, e funciona bem (ele saca o new.email para a 2ª tabela):<br><pre>CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $emp_audit$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO emp_audit SELECT 'D', now(), user, <font size="4"><b><u>NEW.email</u></b></font>;
END IF;<br><br> RETURN NULL; -- result is ignored since this is an AFTER trigger
END;
$emp_audit$ LANGUAGE plpgsql;
CREATE TRIGGER emp_audit
AFTER UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE process_emp_audit();</pre>A função em python já a tenho escrita e funciona bem (neste momento não tenho aqui o código).<br>Precisava apenas de conseguir definir uma variável no python que me desse o valor do <b><u>NEW.email</u></b>, do género recipient = select NEW.email from emp;<br>
Alguma ideia de como ir sacar aquele new.email e usar como variável no script em python?<br><br>Obrigado a todos e espero ter-me feito entender...<span class="HOEnZb"><font color="#888888"><br><br>Filipe<br><br>
</font></span><br>_______________________________________________<br>
Portugal mailing list<br>
<a href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
<br></blockquote></div><br></div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Portugal mailing list</span><br><span><a href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a></span><br><span><a href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a></span><br></div></blockquote></body></html>