AnyEvent-MySQL
view release on metacpan or search on metacpan
lib/AnyEvent/MySQL.pm view on Meta::CPAN
package AnyEvent::MySQL;
use 5.006;
use strict;
use warnings;
=encoding utf8
=head1 NAME
AnyEvent::MySQL - Pure Perl AnyEvent socket implementation of MySQL client
=head1 VERSION
Version 1.2.1
=cut
our $VERSION = '1.002001';
use AnyEvent::MySQL::Imp;
=head1 SYNOPSIS
This package is used in my company since 2012 to today (2017). I think it should be stable.
(though some data type fetching through prepared command are not implemented)
Please read the test.pl file as a usage example. >w<
#!/usr/bin/perl
use strict;
use warnings;
BEGIN {
eval {
require AE;
require Data::Dumper;
require Devel::StackTrace;
require EV;
};
if( $@ ) {
warn "require module fail: $@";
exit;
}
}
$EV::DIED = sub {
print "EV::DIED: $@\n";
print Devel::StackTrace->new->as_string;
};
use lib 'lib';
use AnyEvent::MySQL;
my $end = AE::cv;
my $dbh = AnyEvent::MySQL->connect("DBI:mysql:database=test;host=127.0.0.1;port=3306", "ptest", "pass", { PrintError => 1 }, sub {
my($dbh) = @_;
if( $dbh ) {
warn "Connect success!";
$dbh->pre_do("set names latin1");
$dbh->pre_do("set names utf8");
}
else {
warn "Connect fail: $AnyEvent::MySQL::errstr ($AnyEvent::MySQL::err)";
$end->send;
}
});
$dbh->do("select * from t1 where a<=?", {}, 15, sub {
my $rv = shift;
if( defined($rv) ) {
warn "Do success: $rv";
}
else {
warn "Do fail: $AnyEvent::MySQL::errstr ($AnyEvent::MySQL::err)";
}
$end->send;
});
#$end->recv;
my $end2 = AE::cv;
#$dbh->prepare("update t1 set a=1 where b=1", sub {
#$dbh->prepare("select * from t1", sub {
my $sth = $dbh->prepare("select b, a aaa from t1 where a>?", sub {
#$dbh->prepare("select * from type_all", sub {
warn "prepared!";
$end2->send;
});
#$end2->recv;
my $end3 = AE::cv;
$sth->execute(1, sub {
warn "executed! $_[0]";
$end3->send($_[0]);
});
my $fth = $end3->recv;
my $end4 = AE::cv;
$fth->bind_col(2, \my $a, sub {
warn $_[0];
});
my $fetch; $fetch = sub {
$fth->fetch(sub {
if( $_[0] ) {
warn "Get! $a";
$fetch->();
( run in 0.512 second using v1.01-cache-2.11-cpan-39bf76dae61 )