terça-feira, 9 de outubro de 2007

Variaveis de sessão usando Pl Python

Olá pessoal, vamos apresentar aqui como implementar no postgreSQL um recurso de variáveis de sessão, que pode ser inclusive usado para "substituir" o uso das variáveis de pacotes do oracle.

Primeiro fizemos a intalação do plpython no fedora 7

wget http://ftp.gui.uva.es/sites/fedora.redhat.com/linux/updates/7/i386/postgresql-plpython-8.2.4-1.fc7.i386.rpm
rpm -ivh postgresql-plpython-8.2.4-1.fc7.i386.rpm



Em seguida instalamos a plpython no banco de dados de trabalho:

createlang plpythonu detran


A pl python tem um recurso interessante que é um dicionário de dados de acesso global dentro de uma sessão, com isso podemos criar 2 funções em python set_session e get_session que vão fazer o trabalho de setar e ler essas variáveis em qualquer local que venhamos a precisar.

Para setar as informações de sessão em python usamos:

GD["nome_var"] = "valor"

para ler o valor da variável usamos apenas

GD["nome_var"]


Abaixo as funcões para gravar e ler as variáveis.

CREATE OR REPLACE FUNCTION set_session(var1 "varchar", var2 "varchar")
RETURNS bool AS
$$
GD[args[0]] = args[1]
return True
$$
LANGUAGE 'plpythonu' VOLATILE;

CREATE OR REPLACE FUNCTION get_session(var1 "varchar")
RETURNS varchar AS
$$
return GD[args[0]]
$$
LANGUAGE 'plpythonu' VOLATILE;


Para testar:
select set_global('nome','coutinho'); # retorna true se nao der pau
select get_global('nome'); # retorna 'coutinho'

Nenhum comentário:

by TemplatesForYouTFY
SoSuechtig, Burajiru