Perl e MySQL

Nesse artigo, eu explico como podemos integrar Perl com MySQL, um dos SGBDs mais populares do mundo.

[ Hits: 14.006 ]

Por: Perfil removido em 05/03/2014


Executando querys / Exibindo o resultado de uma query



Executando querys

Agora, vou ensinar como executar queries (consultas) no MySQL.

Talvez, você esteja lendo isso e não saiba o que é uma query (haha), pior ainda, talvez nem saiba o que é MySQL.

Hoje em dia, é comum as pessoas tentarem aprender coisas avançadas, como por exemplo, explorar buffer overflow, tentam aprender isso mas não sabem nem o que é um bit.

Se esse é seu caso, estude um pouco mais antes de continuar lendo o tutorial, se não, vamos continuar. :D

Para executar uma query, primeiramente, iremos fazer a preparação, depois vem a execução, exemplo:

my $cmd = 'create database `mmxm`';  # Query que será executada
my $query = $con->prepare($cmd);  # No preparo da query é que você manda o comando SQL!
$query->execute;  # Executando a query!
if(not($DBI::errstr)){  # $query->errstr é equivalente a $DBI::errstr. Checando se erros aconteceram
    print "Query '$cmd', executada com sucesso !\n";
} else {
    print "ERRO: ".$query->errstr;
}

Execução:

perl query.pl

Query 'create database `mmxm`', executada com sucesso !


Verificando se o dabatase mmxm foi realmente criado:

mysql -u root -ptoor -e 'show databases;'
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mmxm               |
  | mysql              |
  | perl               |
  +--------------------+
   
   
Obs.: erros podem ocorrer, caso o usuário não tenha permissões necessárias para criar Databases.

Exibindo o resultado de uma query

Já aprendemos como conectar-se ao banco de dados, verificar e identificar erros. Executar queries, a única coisa que falta, para ficarmos "leetados" em Perl e MySQL usando o modulo DBI, é exibir o resultado das queries.

Na interface de linha de comando do MySQL, toda consulta que é feita retorna alguma informação, seja select, insert, update, show, create, etc.

Em Perl, para obtermos valores de uma query do tipo select, podemos usar a função "fetchrow_array", exemplo:

#!/usr/bin/perl -w

use strict;
use DBI;
use DBD::mysql;
my $host = 'localhost';
my $user = 'root';
my $password = 'toor';
my $db = 'mmxm';
my $info = "dbi:mysql:$db:$host:3306";
my $con = DBI->connect($info,$user,$password,{ PrintError => 0, RaiseError => 0 }) or die($DBI::errstr);
my $table = qq{ create table if not exists `tutorial` (
        `id` int(10) unsigned not null auto_increment,
        `mensagem` text COLLATE latin1_general_ci NOT NULL,
        PRIMARY KEY (`id`)
    );
};
my $query = $con->prepare($table);
$query->execute || die($DBI::errstr);
print "Tabela 'tutorial' criada !\n";
print "Inserindo valores dentro da tabela\n";
print "Digite alguma coisa: ";
chomp(my $value = <>);
my $insert = qq{ insert into `tutorial` values(NULL,"$value"); };
$query = $con->prepare($insert);
$query->execute || die($DBI::errstr);
print "Valor $value inserido na tabela 'tutorial' com sucesso !\n";
print "Obtendo valores inseridos na tabela ...\n\n";
sleep(1.3);

my @row;
my $select = "select * from tutorial";
$query = $con->prepare($select);
$query->execute || die($DBI::errstr);

while (@row = $query->fetchrow_array){
    print "@row\n";
}

Executando:

perl mysql.pl
  Tabela 'tutorial' criada !
  Inserindo valores dentro da tabela
  Digite alguma coisa: Perl is awesome
  valor Perl is awesome inserido na tabela 'tutorial' com sucesso !
  Obtendo valores inseridos na tabela ...
   
  1 Perl is awesome
   
   
O valor "Perl is awesome", foi inserido com sucesso na coluna mensagem, o número 1 é o ID da mensagem. Outra forma de obter dados usando select, é com a função "bind_columns", essa função vincula (bind) colunas da tabela para variáveis. No caso, você precisa conhecer bem a estrutura da tabela, para poder retirar da consulta os valores que você quer.

Para saber a estrutura de uma coluna, você pode usar a query:

  mysql> show columns from <tabela>

Aí, é só você usar a criatividade, pegar os nomes das colunas e cria um array que irá receber os valores, ou então, um hash (por exemplo).

Exemplo usando variáveis:

#!/usr/bin/perl -w

use strict;
use DBI;
use DBD::mysql;
my $host = 'localhost';
my $user = 'root';
my $password = 'toor';
my $db = 'mmxm';
my $info = "dbi:mysql:$db:$host:3306";
my $con = DBI->connect($info,$user,$password,{ PrintError => 0, RaiseError => 0 }) or die($DBI::errstr);
my $cmd = 'select * from tutorial';
my $query = $con->prepare($cmd);
$query->execute || die($DBI::errstr);
my($id,$mensagem);
$query->bind_columns(\$id, \$mensagem);
while($query->fetch()) {
    print "ID: $id, Mensagem: $mensagem\n";
}

Execução:

perl select.pl
  • ID: 1, Mensagem: Perl is awesome
  • ID: 2, Mensagem: mmxm was here

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Conectando-se ao Database / Identificando os erros
   3. Executando querys / Exibindo o resultado de uma query
   4. Affected Rows
Outros artigos deste autor

Passos essenciais para configurar seu modem 3G no Linux

Sistemas de arquivos EXT3 e ReiserFS no GNU/Linux

IPtables - Trabalhando com Módulos

LookXP-IceWM - Linux leve e com cara de XP

Faça o GNU/Linux falar as horas para você

Leitura recomendada

Programando uma Intranet com Apache, MySQL e Perl (parte 2)

Gerenciando redes com Perl e SNMP

Phperl, minha gambiarra para usar Perl como se fosse PHP

Programando uma Intranet com Apache, MySQL e Perl (parte 1)

Decodificando filmes do programa "3w player"

  
Comentários
[1] Comentário enviado por leo4b em 05/03/2014 - 05:43h

Muito bom!
Você tem alguma dica de material para quem está começando em perl ? Eu so meio fraquinho em programação mas tenho como base shell script que foi aonde me aprofundei mais :/

[2] Comentário enviado por danniel-lara em 05/03/2014 - 10:54h

Parabéns , muito bom mesmo
bem explicado mesmo
estou estudando perl e esse artigo vai me ajudar muito

[3] Comentário enviado por removido em 05/03/2014 - 12:06h


[1] Comentário enviado por leo4b em 05/03/2014 - 05:43h:

Muito bom!
Você tem alguma dica de material para quem está começando em perl ? Eu so meio fraquinho em programação mas tenho como base shell script que foi aonde me aprofundei mais :/


Cara tem um livro muito bom que se chama Programando com Perl , ele é em português e foi escrito pelo Thiago Glauco Sanchez , o livro é muito bom pra quem ta começando :D

[4] Comentário enviado por danniel-lara em 05/03/2014 - 14:13h


[3] Comentário enviado por Mmxm_bd em 05/03/2014 - 12:06h:

Cara tem um livro muito bom que se chama Programando com Perl , ele é em português e foi escrito pelo Thiago Glauco Sanchez , o livro é muito bom pra quem ta começando :D


Esse Livro é muito bom mesmo eu recomento ele , estou lendo esse livre e é muito bom mesmo


[5] Comentário enviado por gamjacoby em 03/07/2014 - 14:08h

Não entendi aonde eu coloco o código:

use DBI;

@drivers = DBI->available_drivers;
print $_."\n" foreach(@drivers);

[6] Comentário enviado por removido em 03/07/2014 - 20:12h


[5] Comentário enviado por gamjacoby em 03/07/2014 - 14:08h:

Não entendi aonde eu coloco o código:

use DBI;

@drivers = DBI-&gt;available_drivers;
print $_."\n" foreach(@drivers);


Esse codigo é só um exemplo , serve para identificar os drivers instalados.

[7] Comentário enviado por removido em 05/09/2014 - 09:06h

Excelente artigo. Parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts