English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PostgreSQL peut être intégré avec Perl via le module perldbi, qui est un module d'accès aux bases de données pour le langage de programmation Perl. Il définit un ensemble de méthodes, de variables et de conventions fournissant une interface standard aux bases de données.
Voici les étapes à suivre sur votre Linux/Étapes simples pour installer le module DBI sur un ordinateur Unix
$ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz $ tar xvfz DBI-1.625.tar.gz $ cd DBI-1.625 $ perl Makefile.PL $ make $ make install
Si vous avez besoin d'installer le pilote SQLite pour DBI, vous pouvez suivre la procédure suivante pour l'installer
$ wget http://search.cpan.org/CPAN/authors/id/T/TU/TURNSTEP/DBD-Pg-2.19.3.tar.gz $ tar xvfz DBD-Pg-2.19.3.tar.gz $ cd DBD-Pg-2.19.3 $ perl Makefile.PL $ make $ make install
Avant de commencer à utiliser l'interface Perl PostgreSQL, trouvez le fichier pg_hba.conf dans le répertoire d'installation PostgreSQL et ajoutez la ligne suivante
# IPv4 Connexions locales : host all all 127.0.0.1/32 md5
Si le serveur postgres n'est pas en cours d'exécution, vous pouvez utiliser la commande suivante pour le démarrer/Redémarrage du serveur postgres-
[root@host]# service postgresql restart Arrêt du service postgresql : [...] [OK] Démarrage du service postgresql : [...] [OK]
Voici quelques routines DBI importantes qui peuvent répondre à vos besoins pour utiliser une base de données SQLite dans un programme Perl. Si vous cherchez des applications plus complexes, vous pouvez consulter la documentation officielle Perl DBI.
N° | API & Description |
---|---|
1 | DBI→connect($data_source, "userid", "password", \%attr) Établir une connexion ou une session à la base de données demandée $data_source. Si la connexion est réussie, renvoie un objet gestionnaire de base de données. Le format du Datasource est : DBI:Pg:dbname=$database;host=127.0.0.1;port=5432 Pg est le nom du pilote PostgreSQL, testdb est le nom de la base de données. |
2 | dbh→do($sql) Cette routine prépare et exécute une requête SQL. En cas d'erreur, renvoie le nombre de lignes affectées ou non définies. La valeur de retour-1Indique que le nombre de lignes est inconnu, non applicable ou non disponible. Ici, $dbh est le gestionnaire renvoyé par la fonction DBI→connect(). |
3 | dbh→prepare($sql) Préparer une requête pour qu'elle soit exécutée par le moteur de base de données plus tard, et renvoyer une référence à l'objet gestionnaire de requête. |
4 | $sth→execute() Effectuer tout traitement nécessaire pour exécuter la requête préparée. Si une erreur se produit, renvoie undef. L'exécution réussie renvoie toujours true, peu importe le nombre de lignes affectées. Ici, $sth est un gestionnaire de requête renvoyé par la fonction dbh→prepare($sql). |
5 | $sth→fetchrow_array() Obtenir la ligne suivante et la renvoyer sous forme de liste contenant les valeurs des champs. Les champs vides sont renvoyés sous forme de valeur undef dans la liste. |
6 | $DBI::err 相当于$h->err,其中$h是任何句柄类型,如$dbh、$sth或$drh。这将从上次调用的驱动程序方法返回本机数据库引擎错误代码。 |
7 | $DBI::errstr 相当于$h->errstr,其中$h是任何句柄类型,如$dbh、$sth或$drh。这将从上次调用的DBI方法返回本机数据库引擎错误消息。 |
8 | $dbh->disconnect(); 关闭了之前通过调用DBI->connect()打开的数据库连接。 |
下面的Perl代码展示了如何连接到现有数据库。如果数据库不存在,那么将创建它,最后将返回一个数据库对象。
#!/usr/bin/perl use DBI; use strict; my $driver = "Pg"; my $database = "testdb"; my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432"; my $userid = "postgres"; my $password = "pass123"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })}} ou die $DBI::errstr; print "Base de données ouverte avec succès\n";
现在,让我们运行上面给定的程序来打开数据库testdb;如果数据库成功打开,那么它将给出以下消息-
Open database successfully
下面的Perl程序将用于在先前创建的数据库中创建表
#!/usr/bin/perl use DBI; use strict; my $driver = "Pg"; my $database = "testdb"; my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432"; my $userid = "postgres"; my $password = "pass123"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })}} ou die $DBI::errstr; print "Base de données ouverte avec succès\n"; my $stmt = qq(CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);); my $rv = $dbh->do($stmt); if($rv < 0) { print $DBI::errstr; } else { print "Table created successfully\n"; } $dbh->déconnect();
当执行上面给定的程序时,它将在 testdb 中创建 COMPANY 表,并显示以下消息-
Base de données ouverte avec succès Table created successfully
下面的Perl程序显示了如何在上面示例中创建的COMPANY表中创建记录-
#!/usr/bin/perl use DBI; use strict; my $driver = "Pg"; my $database = "testdb"; my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432"; my $userid = "postgres"; my $password = "pass123"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })}} ou die $DBI::errstr; print "Base de données ouverte avec succès\n"; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 )); my $rv = $dbh->do($stmt) ou die $DBI::errstr; $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 )); $rv = $dbh->do($stmt) ou die $DBI::errstr; $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway',}} 20000.00 )); $rv = $dbh->do($stmt) ou die $DBI::errstr; $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );); $rv = $dbh->do($stmt) ou die $DBI::errstr; print "Enregistrements créés avec succès\n"; $dbh->déconnect();
Lorsque le programme ci-dessus s'exécute, les enregistrements spécifiés seront créés dans la table COMPANY et les deux lignes suivantes seront affichées
Base de données ouverte avec succès Enregistrements créés avec succès
Le programme Perl suivant montre comment obtenir et afficher les enregistrements de la table COMPANY créée dans l'exemple précédent-
#!/usr/bin/perl use DBI; use strict; my $driver = "Pg"; my $database = "testdb"; my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432"; my $userid = "postgres"; my $password = "pass123"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })}} ou die $DBI::errstr; print "Base de données ouverte avec succès\n"; my $stmt = qq(SELECT id, name, address, salary from COMPANY;); my $sth = $dbh->prepare( $stmt ); my $rv = $sth->execute() ou die $DBI::errstr; if($rv < 0) { print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = " . $row[0] . "\n"; print "NAME = " . $row[1]."\n"; print "ADDRESS = " . $row[2]."\n"; print "SALARY = " . $row[3]."\n\n"; } print "Opération effectuée avec succès\n"; $dbh->déconnect();
Lorsque le programme ci-dessus est exécuté, le résultat suivant est généré
Base de données ouverte avec succès ID = 1 NAME = Paul ADDRESS = California SALARY = 20000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Opération effectuée avec succès
Le code Perl suivant montre comment utiliser une instruction UPDATE pour mettre à jour n'importe quel enregistrement, puis obtenir et afficher les enregistrements mis à jour de la table COMPANY
#!/usr/bin/perl use DBI; use strict; my $driver = "Pg"; my $database = "testdb"; my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432"; my $userid = "postgres"; my $password = "pass123"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })}} ou die $DBI::errstr; print "Base de données ouverte avec succès\n"; my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;); my $rv = $dbh->do($stmt) ou die $DBI::errstr; if( $rv < 0 ) { print $DBI::errstr; }else{ print "Nombre total de lignes mises à jour : $rv\n"; } $stmt = qq(SELECT id, name, address, salary FROM COMPANY;); my $sth = $dbh->prepare( $stmt ); $rv = $sth->execute() ou die $DBI::errstr; if($rv < 0) { print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = " . $row[0] . "\n"; print "NAME = " . $row[1]."\n"; print "ADDRESS = " . $row[2]."\n"; print "SALARY = " . $row[3]."\n\n"; } print "Opération effectuée avec succès\n"; $dbh->déconnect();
Lorsque le programme ci-dessus est exécuté, le résultat suivant est généré
Base de données ouverte avec succès Nombre total de lignes mises à jour : 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Opération effectuée avec succès
Le code Perl suivant montre comment utiliser une instruction DELETE pour supprimer n'importe quel enregistrement, puis afficher les enregistrements de la table COMPANY-obtenir et afficher les enregistrements restants
#!/usr/bin/perl use DBI; use strict; my $driver = "Pg"; my $database = "testdb"; my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432"; my $userid = "postgres"; my $password = "pass123"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })}} ou die $DBI::errstr; print "Base de données ouverte avec succès\n"; my $stmt = qq(DELETE FROM COMPANY WHERE ID=)2;); my $rv = $dbh->do($stmt) ou die $DBI::errstr; if( $rv < 0 ) { print $DBI::errstr; } else { print "Nombre total de lignes supprimées : $rv\n"; } $stmt = qq(SELECT id, name, address, salary FROM COMPANY;); my $sth = $dbh->prepare( $stmt ); $rv = $sth->execute() ou die $DBI::errstr; if($rv < 0) { print $DBI::errstr; } while(my @row = $sth->fetchrow_array()) { print "ID = " . $row[0] . "\n"; print "NAME = " . $row[1]."\n"; print "ADDRESS = " . $row[2]."\n"; print "SALARY = " . $row[3]."\n\n"; } print "Opération effectuée avec succès\n"; $dbh->déconnect();
Lorsque le programme ci-dessus est exécuté, le résultat suivant est généré
Base de données ouverte avec succès Nombre total de lignes supprimées : 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Opération effectuée avec succès