Perl e MySQL

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

[ Hits: 11.547 ]

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

wpa_supplicant.conf - Configuração para WPA2-PSK

Quero usar o Baiacu em casa, mas será que eu posso?

Um tour pelos ripadores de CDs para Linux

JlGui - Java Media Player

Gerência e criação de módulos do kernel

Leitura recomendada

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

Phperl, minha gambiarra para usar Perl como se fosse PHP

Executando os principais frameworks Perl no cPanel com CGI

Programando em Perl (parte 2)

Instalação de MRTG em ambiente Windows

  
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 eddye00 em 05/09/2014 - 09:06h

Excelente artigo. Parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts