[Cascavel-pm] Perl + Postgres
Fabio G. Martins
fabio.martins em apenas.com
Terça Agosto 19 07:14:49 CDT 2003
Bom dia Hélcio
Para que a conexão com o Postgres funcione vc precisa de alguns itens
básicos, vou deixar bem claro p/ que funcione o seu sistema
1º Passo - Independente do sistema operacional, vc deve ter permissão de
acesso com ou sem senha dentro do "pg_hba.conf" (Configurção do Postgres)
ex:
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all ident
sameuser
host all all 127.0.0.1 255.255.255.255 ident
sameuser
host senhas snow 192.168.0.0 255.255.255.0
password
Neste exemplo está configurado p/ toda a minha rede acessar o banco "senhas"
apenas com o usuario "snow", acesso único e exclusivamente para este usuário
para garantir o funcionamento, tente acessar a base de dados de uma máquina
remota com o comando programa psql:
ex:
psql senhas -U snow
password: *****
senhas=> selec * from tab_usuarios;
Certo isto estando funcionando vc precisa ter algumas bibliotecas instaladas
para conexão do Perl com o Banco PostgreSQL, segue abaixo a lista das
mesmas:
libdbd-pg-perl - PostgreSQL interface for Perl 5 using DBI
libpgperl - Perl modules for PostgreSQL
certo estando as devidas bibliotecas instaladas, vc já pode escrever o seu
código p/ conexão vou te mandar um exemplo também:
ex:
#!/usr/bin/perl -w
$| = 1;
use CGI; use DBI;
$page = new CGI;
print $page->header();
open CONF, "config.conf";
@confs = ;
print $confs[0];
print $confs[1];
print $confs[2];
my $host = $confs[3];
my $db = $confs[4];
my $usuario = lc($page->param('usuario'));
my $senha = lc($page->param('senha'));
my $banco = DBI->connect("DBI:Pg:dbname=$db; host=$host", "snow", "sua
senha") or print $DBI::errstr;
my $sql = "select nome, senha, tipo from tab_usuarios where nome like '" .
$usuario . "' and senha like '" . $senha . "'";
my $query = $banco->prepare($sql) or print $DBI::errstr;
$query->execute or print $DBI::errstr;
Bem acredito que o Script tenha ficado claro, porém caso vc não entenda eu
estou fazendo o seguinte, eu abro um arquivo onde eu armazeno diversas
configurações entre elas os dados do acesso ao meu banco, dai em cada script
CGI que eu crio eu coloco estas linhas padrões que vão printar em HTML
cabeçalho da página, uso também no inicio do script o módulo DBI que será
indispensável pára conexão com o banco em seguida estão as strings de
conexão com o banco, exatament o seguinte comando
"DBI->connect("DBI:Pg:dbname=$db; host=$host", "snow", "sua senha")" irá se
encarregar da sua conexão com o banco, o resto é dedutivo espero que vc
entenda, caso não pode continuar a perguntar que ficaremos felizes em
ajudar.
Só mais uma coisinha, caso não funcione ainda assim seria bom vc debugar,
mandando o DBI imprimir as mensagens de erro caso, ainda sim não fique claro
tente dar uma olhada no log de erros do apache, caso vc não consiga
solucionar sozinho, coloque as mensagens de erro aqui na lista que
tentaremos ajudá-lo.
ex: cat /var/log/apache/error.log
Espero ter ajudado, qualquer coisa pergunte denovo
----- Original Message -----
From: "helcio" <helcio em totaldata.com.br>
To: "Cascavel Perl Mongers" <cascavel-pm em mail.pm.org>
Sent: Monday, August 18, 2003 2:34 PM
Subject: [Cascavel-pm] Perl + Postgres
> Boa tarde lista,
>
> estou tentando me conectar a um banco de dados Postgres e não estou tendo
> sucesso.
> Instalei o DBD pgsql do CPAN, e nos exemplos que acompanham o pacote, ele
> mostra várias sintaxes para fazer a conexão, só que nenhuma delas
funcionou.
>
> Existe um padrão? Depende do DBD que baixei?
>
> Obrigado,
> Hélcio Baurich
> TotalData
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em mail.pm.org
> http://cascavel.pm.org/mailman/listinfo/cascavel-pm
>
Mais detalhes sobre a lista de discussão Cascavel-pm