Blog technique sur mes expériences de développeur.
26 mars 2021
Dans les chapitres précédents, nous avons pris le temps de comprendre la base de données sur laquelle nous allons travailler par la suite dans ce tutoriel.
Il est maintenant temps de se jeter à l’eau et d’attaquer la programmation en Perl. Dans ce chapitre, nous allons voir ensemble le code minimal qu’il faudra écrire lorsque vous manipulerez des bases de données en Perl, à savoir la connexion et la déconnexion.
Ce cours était originalement publié sur la plateforme OpenClassrooms. La plateforme OpenClassrooms ayant supprimée ce tutoriel en 2020 et le tutoriel étant sous licence CC BY-SA 4.0, je vous propose de le (re)découvrir ici.
Cette première partie va nous permettre de détailler les différentes parties du script minimal, nécessaire à notre connexion à la base “Zvoitures”.
Puisqu’il faut bien commencer par le début, nous allons tout d’abord décrire l’en-tête de notre script de connexion.
Si vous avez déjà eu l’occasion de travailler avec des modules, cette partie ne devrait pas vous poser de problème. Les autres vont devoir apprendre un nouveau mot-clef : use
.
Son utilisation est toute simple. On indique en fait à notre script que l’on souhaite utiliser le module DBI (dans notre cas). Ainsi, le mot use
sera suivi du module que l’on souhaite utiliser.
Voici donc l’en-tête que chacun doit avoir :
#!/usr/bin/perl -w
use strict;
use DBI; #Permet d'utiliser le module DBI
À noter que l’utilisation de strict
n’est pas une obligation, mais le langage Perl étant très permissif, son utilisation permet aux débutants (et aux autres) de coder de manière plus propre.
Vous l’imaginez bien, se connecter à une base de données nécessite un certain nombre d’informations. Plutôt que de vous les faire deviner, en voici la liste :
Dans un premier temps, je vous propose de stocker ces différentes informations dans des variables.
Voici ce que vous devez obtenir :
my $base = 'Zvoitures'; #Le nom de la base
my $host = '127.0.0.1'; #L'endroit où est stockée la base (ici c'est localhost)
my $login = 'root'; #Le login utilisateur
my $mdp = ''; #Le mot de passe (ici, il n'y en a pas)
Félicitations ! Si vous êtes arrivés jusqu’ici, c’est vraiment que votre motivation est inébranlable ! Nous allons enfin pouvoir étudier la fonction qui nous permet de nous connecter à notre base de données.
Il s’agit de la fonction connect()
de l’objet DBI. Cette fonction prend pour paramètres les différentes informations que nous avons stocké précédemment dans des variables.
Voici donc la fameuse connexion :
my $dbd = DBI->connect("dbi:mysql:dbname=$base;host=$host;", $login, $mdp)
or die 'Impossible de se connecter à la base de données : '.DBI::errstr;
Les mots clefs or die
permettent de gérer les éventuelles erreurs de connexion à la base de données. Ainsi, s’il y a un problème avec la connexion, le or die
permet d’arrêter le programme et d’afficher le message d’erreur. La variable DBI::errstr
permet d’afficher à l’écran la raison exacte du problème.
Si la connexion se fait sans problème, vous n’aurez rien de spécial à l’écran.
À noter que les pilotes utilisés constituent le premier paramètre que l’on indique à notre fonction connect()
. N’hésitez surtout pas à adapter la syntaxe dans le cas où vous n’utiliseriez pas MySQL !
Je crois qu’on a fait le tour. Vous êtes maintenant prêts à essayer votre connexion !
Je n’arrive pas à me connecter ! Que dois-je faire ?
Pas de panique ! Je vous propose de voir les points qui sont peut-être à l’origine de votre problème.
Peut-être n’avez-vous pas réussi à reconstituer le puzzle du chapitre précédent. C’est pourquoi je propose de vous fournir le code complet du script de connexion. N’hésitez pas à le copier-coller, afin de vérifier si le problème ne vient pas de là !
Voici le monstre :
#!/usr/bin/perl -w
use strict;
use DBI;
#Les paramètres
my $base = 'Zvoitures';
my $host = '127.0.0.1';
my $login = 'root';
my $mdp = '';
#La connexion
my $dbd = DBI->connect("dbi:mysql:dbname=$base;host=$host;", $login, $mdp)
or die 'Impossible de se connecter à la base de données : '.DBI::errstr;
Peut-être avez-vous simplement oublié de démarrer MySQL ?
Pour les utilisateurs de Windows, vérifiez que le logo de WAMPP apparaît bien en bas à droite dans la barre des tâches. Si ce n’est pas le cas, n’hésitez surtout pas à relancer le soft via le menu “Démarrer”.
Comme pour les utilisateurs de Windows, je vous invite à lancer le logiciel via votre dossier “Applications”.
Vous pouvez vérifier l’état de fonctionnement via la commande :
sudo /opt/lampp/lampp status
Deux types de réponses peuvent alors apparaître :
Version: XAMPP for Linux 1.7.3a
Apache is running.
MySQL is running.
ProFTPD is running.
Cette réponse signifie que tout semble fonctionner et que le problème vient d’ailleurs.
Apache is not running.
MySQL is not running.
ProFTPD is not running
Cette seconde réponse indique que les différents outils (dont MySQL) ne tournent pas. N’oubliez surtout pas de les lancer avec :
sudo /opt/lampp/lampp start
Je vous encourage également à vérifier vos identifiants de connexion à la base de données.
Pour ça, ouvrez MySQL et allez faire un tour dans l’onglet “Privilèges”. Vous devriez alors avoir un tableau des utilisateurs avec pour chacun son nom et son mot de passe.
Certains d’entre vous auront peut-être une erreur parlant de socket.
Assurez-vous d’avoir bien stocké dans votre variable $host
la chaîne de caractères “127.0.0.1” et non “localhost”.
Même si ces 2 mots sont synonymes pour les informaticiens, ils ne le sont visiblement pas pour MySQL.
$dbh
Avant de montrer la fonction qui va vous permettre de fermer votre connexion proprement, je voudrais vous dire quelques mots sur la variable $dbd
.
Cette variable est ce que l’on appelle un descripteur de base. Ce descripteur est attaché à la base de données sur laquelle nous travaillons grâce à la fonctionconnect() du module DBI.
À noter que j’ai nommé ma variable$dbd par convention, mais vous pouvez bien entendu lui donner le nom que vous souhaitez.
C’est d’ailleurs ce descripteur qui va nous permettre immédiatement de nous déconnecter de la base de données et par la suite de faire des requêtes SQL.
Se déconnecter d’une base de données en Perl est extrêmement simple, puisqu’une seule instruction suffit.
Nous allons utiliser la méthode disconnect
de notre descripteur de base.
Voici alors ce que nous obtenons :
$dbd->disconnect;
Comme vous pouvez le constater, la déconnexion se passe de commentaire. Il suffit de placer cette instruction à l’endroit de votre script où vous souhaitez vous déconnecter pour l’être instantanément !
Maintenant que vous savez ouvrir et fermer une connexion, je vous propose de s’attaquer à l’exécution de nos premières requêtes !