Perl e MySQL

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

[ Hits: 15.049 ]

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

Jogando Xadrez online e gratuitamente no Linux

Bom dia, é compatível com Linux?

Tutorial de instalação do H3270 (sources) com SSL no RHEL5 (s390x)

Mencoder ripando DVD para DIVX

Fornecendo informações úteis para obter respostas válidas

Leitura recomendada

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

Executando os principais frameworks Perl no cPanel com CGI

Enviando emails em Perl

Módulos CPAN no Debian e distros GNU/Linux em geral

Script Perl para consultas em base LDAP e/ou Active Directory

  
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