MPMinus::Store::DBI - Simple database interface based on CTK::DBI
Version 1.01
use MPMinus::Store::DBI; # MySQL connect my $mysql = new MPMinus::Store::DBI ( -dsn => 'DBI:mysql:database=TEST;host=192.168.1.1', -user => 'login', -pass => 'password', -connect_to => 5, -request_to => 60 -attr => { mysql_enable_utf8 => 1, RaiseError => 0, PrintError => 0, }, ); # See CTK::DBI # MySQL connect (old style, without DSN) my $mysql = new MPMinus::Store::DBI ( -m => $m, # OPTIONAL -driver => 'mysql', # Driver name. See DBI module # Available drivers: # CSV, DBM, ExampleP, File, Gofer, ODBC, Oracle, # Pg, Proxy, SQLite, Sponge, mysql -host => '192.168.1.1', -port => '3306', # default -database => 'TEST', -user => 'login', -pass => 'password', -attr => { mysql_enable_utf8 => 1, RaiseError => 0, PrintError => 0, }, ); my $dbh = $mysql->connect; my $pingstat = $mysql->ping if $mysql; $mysql->reconnect() unless $pingstat; # Table select (as array) my @result = $mysql->table($sql, @inargs); # Table select (as hash) my %result = $mysql->tableh($key, $sql, @inargs); # $key - primary index field name # Record (as array) my @result = $mysql->record($sql, @inargs); # Record (as hash) my %result = $mysql->recordh($sql, @inargs); # Fiels (as scalar) my $result = $mysql->field($sql, @inargs); # SQL/PL-SQL my $sth = $mysql->execute($sql, @inargs); ... $sth->finish;
Simple database interface based on CTK::DBI
You can set $MPMinus::Store::DBI::DEBUG_FORCE = 1 to enable forced debugging
my $mysql = new MPMinus::Store::DBI ( -m => $m, # OPTIONAL -driver => 'mysql', # Driver name. See DBI module # Available drivers: # CSV, DBM, ExampleP, File, Gofer, ODBC, Oracle, # Pg, Proxy, SQLite, Sponge, mysql -host => '192.168.1.1', -port => '3306', # default -database => 'TEST', -user => 'login', -pass => 'password', -attr => { mysql_enable_utf8 => 1, RaiseError => 0, PrintError => 0, }, );
Returns MPMinus::Store::DBI object. See also CTK::DBI
my $status = $mysql->ping();
Returns connection's life status
$mysql->reconnect unless $mysql->ping();
my $err = $mysql->err; my $errstr = $mysql->errstr; my $state = $mysql->state;
Methods returns DBI values: err, errstr and state.
See "METHODS_COMMON_TO_ALL_HANDLES" in DBI
package MPM::Foo::Handlers; use strict; use MPMinus::Store::DBI; sub handler { my $r = shift; my $m = MPMinus->m; ... # MySQL connect $m->set_node( mysql => new MPMinus::Store::DBI ( -dsn => 'DBI:mysql:database=NAME;host=HOST', -user => 'USER', -pass => 'PASSWORD', -attr => { mysql_enable_utf8 => 1, RaiseError => 0, PrintError => 0, HandleError => sub { $m->log_error(shift || '') }, }, ) ) unless $m->mysql; ... } package MPM::Foo::Test; use strict; sub response { my $m = shift; my @data = $m->mysql->table('select * from table'); ... return Apache2::Const::OK; }
package MPM::Foo::Handlers; use strict; use MPMinus::Store::DBI; sub handler { my $r = shift; my $m = MPMinus->m; ... # MySQL connect/reconnect if ($m->mysql) { $m->mysql->reconnect unless $m->mysql->ping; } else { # eval 'sub CTK::DBI::_error {1}'; # For supressing CTK::DBI errors $m->set_node( mysql => new MPMinus::Store::DBI ( -dsn => 'DBI:mysql:database=NAME;host=HOST', -user => 'USER', -pass => 'PASSWORD', -attr => { mysql_enable_utf8 => 1, RaiseError => 0, PrintError => 0, HandleError => sub { $m->log_error(shift || '') }, }, ) ); } ... } package MPM::Foo::Test; use strict; sub response { my $m = shift; my @data = $m->mysql->table('select * from table'); ... return Apache2::Const::OK; }
use MPMinus::Store::DBI; $MPMinus::Store::DBI::DEBUG_FORCE = 1; my $dbi = new MPMinus::Store::DBI ( -driver => 'mysql', -name => 'mylocaldb', -user => 'user', -password => 'password' ); ... my @table = $dbi->table("select * from tablename where date = ?", "01.01.2000");
use MPMinus::Store::DBI; use Data::Dumper; $MPMinus::Store::DBI::DEBUG_FORCE = 1; my $o = new MPMinus::Store::DBI( -driver => 'Sponge', -attr => { RaiseError => 1 }, ); my $dbh = $o->connect(); my $sth = $dbh->prepare("select * from table", { rows => [ [qw/foo bar baz/], [qw/qux quux corge/], [qw/grault garply waldo/], ], NAME => [qw/h1 h2 h3/], }); $sth->execute(); my $result = $sth->fetchall_arrayref; $sth->finish; print Dumper($result);
Init version
See CHANGES file
CHANGES
mod_perl2, DBI, CTK::DBI
mod_perl2
See TODO file
TODO
* none noted
DBI, CTK::DBI, Apache::DBI
Serż Minus (Sergey Lepenkov) http://www.serzik.com <abalama@cpan.org>
Copyright (C) 1998-2019 D&D Corporation. All Rights Reserved
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See LICENSE file and https://dev.perl.org/licenses/
LICENSE
To install MPMinus, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MPMinus
CPAN shell
perl -MCPAN -e shell install MPMinus
For more information on module installation, please visit the detailed CPAN module installation guide.