+ - 0:00:00

Perl et les bases de données

Clément Plancq

22 octobre 2014

1 / 6

DBI

Database independant interface for Perl

Le module DBI est une interface (API) d'accès aux bases de données pour Perl.


           |<- Scope of DBI ->|
                .-.   .--------------.   .-------------.
.-------.       | |---| XYZ Driver   |---| XYZ Engine  |
| Perl  |       | |   `--------------'   `-------------'
| script|  |A|  |D|   .--------------.   .-------------.
| using |--|P|--|B|---|Oracle Driver |---|Oracle Engine|
| DBI   |  |I|  |I|   `--------------'   `-------------'
| API   |       | |...
|methods|       | |... Other drivers
`-------'       | |...
                `-'

from metacpan

2 / 6

DBI

use strict;
use warnings;
use DBI;

my $dbh = DBI->connect() or die $DBI::errstr;
my $sth = $dbh->prepare("SELECT * FROM mytable WHERE id = 1");
$sth->execute();
while (my $ref = $sth->fetchrow_arrayref()){
...
}
#my $ref = $sth->fetchall_arrayref();

$dbh->disconnect();
3 / 6

DBI et SQLite

Voir doc

use strict;
use warnings;
use DBI;

my $dbfile = 'treetagger.db';    
my $dbh = DBI->connect(          
    "dbi:SQLite:dbname=$dbfile", # DSN: dbi, driver, database file
    "",                          # no user
    "",                          # no password
    { RaiseError => 1,       # complain if something goes wrong
    sqlite_unicode => 1 }
) or die $DBI::errstr;
4 / 6

Exemple données TreeTagger

Création de la base

my $table = 'treetagger';
$dbh->do("create table $table (form TEXT, pos TEXT, lemma TEXT) ")
  or die $DBI::errstr;

my $sth = $dbh->prepare("INSERT INTO $table VALUES (?, ?, ?)")
or die $DBI::errstr;


while(<>){
  chomp;
  my($form, $pos, $lemma) = split(/\t/);
  $sth->execute($form, $pos, $lemma);
}
5 / 6

Exemple données TreeTagger

Interrogation

my $table = 'treetagger';
my $sth = $dbh->prepare("SELECT * FROM $table WHERE pos = \"ADJ\"");
$sth->execute();
my $ref_tab = $sth->fetchall_arrayref;

print Dumper $ref_tab;
6 / 6

DBI

Database independant interface for Perl

Le module DBI est une interface (API) d'accès aux bases de données pour Perl.


           |<- Scope of DBI ->|
                .-.   .--------------.   .-------------.
.-------.       | |---| XYZ Driver   |---| XYZ Engine  |
| Perl  |       | |   `--------------'   `-------------'
| script|  |A|  |D|   .--------------.   .-------------.
| using |--|P|--|B|---|Oracle Driver |---|Oracle Engine|
| DBI   |  |I|  |I|   `--------------'   `-------------'
| API   |       | |...
|methods|       | |... Other drivers
`-------'       | |...
                `-'

from metacpan

2 / 6
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
f Toggle fullscreen mode
c Clone slideshow
p Toggle presenter mode
w Pause/Resume the presentation
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow