<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>