Une des caractéristiques les plus puissantes de Perl est sa capacité à traiter , analyser , manipuler et formater du texte et de données, ce qui en fait un langage idéal pour développer des applications de bases de données . La base de données Interface Perl ( DBI ) Module rend facile à connecter et utiliser un large éventail de systèmes de bases de données , notamment MySQL. En plus de Perl, Perl :: DBI et DBD :: pilote de base de données MySQL doit être installé sur le système où les scripts sont élaborés et exécutés. La plupart des fonctionnalités de MySQL peut être accédé par le pilote MySQL pour Perl :: DBI . Connexion au serveur MySQL
Avant de pouvoir exécuter des requêtes et d'autres déclarations sur une base de données , votre script doit établir une connexion. Importez le module DBI dans votre script avec " use DBI ":
use DBI ;
DBI-> fonction de connexion se connecte à une base de données et retourne une poignée de base de données . Établir une connexion à une base de données locale , en fournissant le nom de votre base de données dans le paramètre source , et le nom d'utilisateur et mot de passe pour l'utilisateur MySQL votre script utiliser pour la connexion :
my $ dbh = DBI- > ; connect ( " DBI : mysql : dbname ' , ' user ' , ' password ' ) or die " échec de la connexion : $ DBI :: errstr " ;
connexion à une base de données distante est semblable à une connexion locale par fournir l'adresse de l' hôte distant dans le paramètre de la source. Dans l'exemple suivant , l'attribut RaiseError est réglé pour signaler des erreurs via die () à la place du "or die " Erreur vérification manuelle clause dans l'exemple précédent . L'attribut PrintError est désactivé. PrintError signale automatiquement les erreurs via warn ( ) lorsqu'il est activé
my $ dbh = DBI- > connect (' DBI : mysql : dbname ; host = db.server.edu ' . , 'User' , 'password' , { PrintError => 0, RaiseError => 1 }); .
Avant de quitter le script , déconnecter de la base en utilisant la fonction de déconnexion
$ dbh- > disconnect () ;
requêtes de base
la déclaration la plus commune exécutée sur une base de données est l'instruction SELECT. Créer une poignée de déclaration en appelant la fonction prepare avec l'instruction SELECT. Par exemple, cette commande SELECT va interroger un tableau énumérant des personnes pour le premier champ de nom pour toutes les entrées où le nom de famille est " Johnson ":
ma $ sth = $ dbh -> prepare ( " prénom SELECT FROM les gens là où lastname = ' Johnson ' ");
exécutez l'instruction :
$ sth -> execute ();
Récupérer une ligne de données à la fois comme une table de hachage et imprimer les résultats :
print " requête pour le nom de famille Johnson: \\ n"; while ( my $ resultrow = $ sth- > fetchrow_hashref ()) { my $ fn = $ resultrow -> { firstname} ; print "$ fn \\ n"; }
Il ya plusieurs fonctions pour récupérer les résultats de la requête , comme fetchrow_array pour aller chercher la prochaine ligne dans un tableau et fetchall_hashref chercher tous les résultats à la fois en une table de hachage .
aide des espaces réservés
Placeholders peut être utilisé dans la déclaration préparer fonction . Cette fonction est utile dans les scripts interactifs où les valeurs du filtre de requête sont fournis par l'utilisateur , en particulier si une boucle permet à l' utilisateur de soumettre plusieurs requêtes avant de quitter.
Par exemple , l'espace réservé ( le point d'interrogation ) est l'endroit où saisie de l'utilisateur sera fourni lors de l'instruction est exécutée :
my $ sth = $ dbh -> prepare (' SELECT * FROM personnes WHERE = Nom ?') or die "Erreur de déclaration : " . $ dbh- > errstr ;
Une boucle while invite à plusieurs reprises à l'utilisateur un nom:
print " Recherche pour nom: " ; while ($ lastname = <> ) { chomp $ lastname ; my @ résultats ;
La déclaration préparée précédemment est exécuté, avec $ lastname fourni en tant que paramètre . Ce paramètre sera insérée dans l'instruction de requête à la place de la marque espace réservé question:
$ sth- > execute ( $ nom) or die "Erreur de déclaration : " . $ sth- > errstr ;
Les résultats , le cas échéant , sont imprimés :
if ( $ sth- > lignes == 0 ) {print " Aucun élément correspondant à ` $ lastname " \\ n \\ n"; . }
tout (@ results = $ sth- > fetchrow_array ()) { $ prenom = mes résultats $ [1]; mon âge $ = $ résultats [3]; print " $ prenom $ lastname ( $ age ) \\ n"; }
la poignée de déclaration est rangé avec la méthode de finition , et la boucle continue :
$ sth- > finition ; print " Recherche pour nom: ";}
ajout , mise à jour et de suppression d'enregistrements
mises à jour , des insertions et des suppressions peuvent être exécutées en utilisant simplement la fonction do . Par exemple:
$ dbh- > do ( "INSERT INTO personnes ( nom, prénom , âge) VALUES (' Bob ', ' Johnson ', 32 )"); $ dbh- > do ( " UPDATE gens mis prénom = ' Robert' où = prénom " , undef, " Bob "); $ dbh- > do ( " DELETE FROM personnes WHERE lastName = ' Johnson ' ");
Le Construire et gérer un
fonctions d'administration de base de données
base sont exécutées avec la fonction fonction en utilisant la poignée de la base de données obtenue à partir de la connexion:
$ dbh- > fonction ( " createdb ", $ dbname , 'admin' ) ; $ dbh- > fonction ( " dropdb ", $ dbname , 'admin' ) ;
Le serveur peut également être rechargé et arrêté. Cette fonctionnalité est utile pour simplifier et automatiser les tâches d'administration des systèmes de bases de données . Privilèges suffisants sont nécessaires pour ces actions.
Table de base de données de
créer et modifier des déclarations peuvent être exécutées avec la fonction do . Par exemple, l'instruction suivante crée la table personnes :
$ dbh- > do ( "CREATE TABLE PERSONNES (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , prénom VARCHAR ( 50) , Nom VARCHAR ( 50) , l'âge RC ) ");
Création et mise à jour des bases de données existantes est utile pour automatiser l'installation d'applications distribuées , comme les forums de discussion, des galeries de photos et des blogs
.