Um dos recursos mais poderosos do Perl é sua capacidade de processar , analisar , manipular e formatar texto e dados , tornando-se uma linguagem ideal para o desenvolvimento de aplicações de banco de dados . A Interface ( DBI ) Módulo Perl banco de dados faz com que seja fácil de conectar e usar uma ampla gama de sistemas de banco de dados , incluindo MySQL . Além de Perl , o módulo Perl DBI e DBD :: :: motorista banco de dados mysql deve ser instalado no sistema em que os scripts são desenvolvidos e executados. A maioria das funcionalidades do MySQL pode ser acessado através do driver do MySQL para Perl :: DBI . Conectando-se ao servidor MySQL
Antes de executar consultas e outras declarações em um banco de dados , o script precisa estabelecer uma conexão. Importe o módulo DBI no seu script com " usar DBI " :
use DBI ;
A DBI- > função conectar conecta a um banco de dados e retorna o manipulador de banco de dados. Estabelecer uma conexão com um banco de dados local , fornecendo o nome do seu banco de dados no parâmetro de origem , eo nome de usuário e senha para o usuário do MySQL seu script será usado para a conexão:
my $ dbh = DBI- > , connect (' DBI : mysql : dbname' , 'user ', ' senha' ) or die "Conexão falhou: $ DBI :: errstr ";
Conectando a um banco de dados remoto é semelhante a uma ligação local por fornecendo o endereço do host remoto no parâmetro source. No exemplo a seguir , o atributo RaiseError está definido para reportar erros via die ( ) no lugar do "ou morrer " erro manual de cláusula no exemplo anterior a verificação . O atributo PrintError está desativado. PrintError informa automaticamente erros via avisar () quando ativado
my $ dbh = DBI- > connect ( " DBI : mysql : dbname ; host = db.server.edu ' . , ' User ' , ' password ' { PrintError => 0, RaiseError => 1 }); .
Antes de sair do script, desconectar-se do banco de dados usando a função de desconexão
$ dbh -> disconnect ( ) ;
consultas básicas
a declaração mais comum executado em um banco de dados é a instrução SELECT . Criar um manipulador de instrução , chamando a função preparar com a instrução SELECT . Por exemplo, este SELECT consultar uma listagem de mesa de pessoas para o primeiro campo de nome para todas as entradas onde o último nome é " Johnson " :
my $ sth = $ dbh -> prepare ( "SELECT Nome FROM pessoas onde sobrenome = ' Johnson ' ");
execute a instrução :
$ sth -> execute () ;
Recuperar uma linha de dados em um momento como um hash e imprimir os resultados :
print " Consulta por sobrenome Johnson : \\ n " ; while ( my $ resultrow = $ sth -> fetchrow_hashref ()) {my $ fn = $ resultrow -> { primeiro nome }; print " $ fn \\ n"; }
Existem várias funções para recuperar os resultados da consulta , tais como fetchrow_array para buscar a próxima linha como uma matriz e fetchall_hashref para buscar todos os resultados ao mesmo tempo em um hash.
Usando marcadores
espaços reservados podem ser usados na declaração de preparar função. Isto é útil em scripts interativos , onde os valores de filtro de consulta são fornecidos pelo usuário , especialmente se um loop permite ao usuário enviar várias consultas antes de sair.
Por exemplo , o espaço reservado ( o ponto de interrogação) fornece o local onde entrada do usuário será fornecido quando a instrução é executada :
my $ sth = $ dbh -> prepare ( 'SELECT * FROM pessoas onde sobrenome = ? " ) or die " Erro de declaração: " . $ dbh -> errstr ;
Um loop while repetidamente solicita ao usuário um nome:
impressão "Procurar sobrenome: "; while ($ sobrenome = <>) { chomp $ sobrenome ; my @ resultados;
A declaração preparada anteriormente é executado, com US $ sobrenome fornecido como um parâmetro . Este parâmetro será inserido na instrução de consulta no lugar do ponto de interrogação espaço reservado :
$ sth -> execute ( $ sobrenome ) or die "Erro de declaração:" . $ sth -> errstr ;
Os resultados , se houver, são impressos :
if ( linhas $ sth -> == 0) {print " sem resultados para ` $ sobrenome . '\\ n \\ n "; }
while ( @ results = $ sth -> fetchrow_array ()) {my $ nome = $ resultados [1] , a minha idade = $ $ resultados [3]; print " $ $ primeiro nome sobrenome ( $ idade ) \\ n"; }
o identificador de instrução está arrumado com o método de acabamento , eo ciclo continua :
$ sth -> finish ; imprimir "Procurar sobrenome: ";}
adicionar, atualizar e excluir registros
atualizações , inserções e exclusões podem ser executados simplesmente usando a função de fazer. Por exemplo :
$ dbh -> fazer ( " INSERT INTO pessoas ( nome, sobrenome , idade) VALUES (' Bob ', ' Johnson , 32) "); $ dbh -> fazer ( " atualizar as pessoas set nome = ' Robert' onde nome = " , undef , " Bob " ); $ dbh -> não ( ?" DELETE FROM pessoas onde sobrenome = ' Johnson ' ");
construção e gestão de um banco de dados
funções de administração de banco de dados são executadas com a função de função usando o banco de dados obtidos a partir de lidar com a conexão:
$ dbh -> func ( " createdb ", $ dbname , 'admin' ); $ dbh -> func ( " dropdb ", $ dbname , 'admin' );
O servidor também pode ser recarregado e desligar . Esta funcionalidade é útil para simplificar e automatizar tarefas de administração de sistemas de banco de dados. Privilégios suficientes são necessárias para essas ações .
Mesa
banco de dados criar e alterar as instruções podem ser executadas com a função de fazer. Por exemplo, esta declaração cria a tabela de pessoas :
$ dbh -> não ( "CREATE TABLE pessoas (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, VARCHAR primeiro nome (50) , sobrenome VARCHAR ( 50) , INT idade ) ");
Criar e atualizar bancos de dados existentes é útil para automatizar a instalação de aplicações distribuídas , tais como fóruns de discussão , galerias de fotos e blogs
.