Perl类操作mysql

最近公司需要用Perl做自动化,才学了两三周的Perl,所以代码贴出来写的不好不要笑。正好碰到一个处理Mysql的需求,按照以前的习惯,将几个操作简单整合一下,以防日后之需。

下面使用DBI访问Mysql的一个类。

1.new  实例化一个类

2.query  执行一个查询操作

3.do  执行一条sql语句(update,delete, insert)

4.execMultiSql  执行带占位符的语句(insert into user(name,age) values(?,?); )

5.各种,set,get方法


#!/user/bin/perl -w
package Perl4Mysql;
use strict;
use DBI;
use Data::Dumper;

sub new { #host, dbname, user, password, port
my $class = shift;

my ($host, $dbName, $user, $password, $port) = @_;
$host = "localhost" if !defined($host) or $host eq "";
$dbName = "mysql" if !defined($dbName) or $dbName eq "";
$user = "root" if !defined($user) or $user eq "";
$password = "" if !defined($password) or $password eq "";
$port = 3306 if !defined($port);

my $self = {
"host"=>$host,
"database"=>$dbName,
"user"=>$user,
"password"=>$password,
"port"=>$port
};

bless $self, $class;

return $self;
}

sub query { #sql string for select
my ($self, $sql) = @_;
my @result;
my ($database,$host, $user,$password,$port) = (
$self->{database},
$self->{host},
$self->{user},
$self->{password},
$self->{port}
);
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host;port=$port", $user, $password)
or die "Can‘t connect to database: $DBI::errstr\n"; #连接数据库
my $sth = $dbh->prepare($sql); #准备
$sth->execute(); #执行

while(my @res = $sth->fetchrow_array()) {

push @result, \@res;
} #打印抽取结果
$sth->finish; #结束句柄
$dbh->disconnect; #断开
return \@result;
}
#执行一条语句
sub do {
my ($self, $sql) = @_;
my ($database,$host, $user,$password,$port) = (
$self->{database},
$self->{host},
$self->{user},
$self->{password},
$self->{port}
);
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host;port=$port",
$user,
$password)
or die "Can‘t connect to database: $DBI::errstr\n"; #连接数据库

my $rows = $dbh->do($sql) or die "Can‘t execute $sql: $dbh->errstr\n";
# $dbh->commit or die "commit error :$dbh->errstr\n";
$dbh->disconnect; #断开

return $rows;
}
#执行多条带占位符(?)的sql
sub execMultiSql {
my ($self, $sql, $params) = @_;
my ($database,$host, $user,$password,$port) = (
$self->{database},
$self->{host},
$self->{user},
$self->{password},
$self->{port}
);
my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host;port=$port",
$user,
$password)
or die "Can‘t connect to database: $DBI::errstr\n"; #连接数据库

my $sth = $dbh->prepare($sql);
my $rows = 0;
eval {
foreach my $ref_param (@{$params})
{
$rows += $sth->execute(@{$ref_param});
}

$sth->finish;
$dbh->disconnect; #断开
};
if([email protected]) {
print "an error: [email protected],continue... \n";
$dbh->rollback;
$sth->finish;
$dbh->disconnect;
return 0;
}
return $rows;
}

sub setHost {
my ($self, $host) = @_;
$self->{host} = $host;
}
sub getHost {
my $self = shift;
return $self->{host};
}
sub setDB {
my ($self, $db) = @_;
$self->{database} = $db;
}
sub getDB {
my $self = shift;
return $self->{database};
}
sub getUser {
my $self = shift;
return $self->{user};
}
sub setUser {
my ($self, $user) = @_;
$self->{user} = $user;
}
sub setPassword {
my ($self, $password) = @_;
$self->{password} = $password;
}
sub getPort {
my $self = shift;
return $self->{port};
}
sub setPort {
my ($self, $port) = @_;
$self->{port} = $port;
}

1;

测试程序如下:


my @param;

my $sqltemp = "insert blog_comment(content, date, userName) values(?, sysdate(), ?);";
my @p1 = ("this is ime.", "ok");
my @p2 = ("okokla, yoin.","jack");
push @param, \@p1; #将两个参数以引用放入进去
push @param, \@p2;

my $rows = $mysql->execMultiSql($sqltemp, \@param);
print $rows;

my $ref_result = $mysql->query("select count(*) from blog_comment");
print Dumper($ref_result);

Perl类操作mysql

时间: 2024-10-08 10:15:58

Perl类操作mysql的相关文章

python编写mysql类实现mysql的操作

前言 我们都知道利用python实现mysql的操作是件很简单的事情,只需要熟练使用MySQLdb模块就能实现mysql的增删改查操作. 为了更好地整合mysql的操作,使用python的类讲mysql的操作整合到一起,是个不错的思路.这里我编写了一个简单的class,来实现对mysql的操作与查询. 操作       本例中,我们准备在mysql的iceny中创建了一张测试表t1,字段为id和timestamp,主要存储系统的时间戳,并在该表中进行增.删.改.查的操作: 当前mysql的状态:

LightMysql:为方便操作MySQL而封装的Python类

原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python操作MySQL数据库的一个常用包.但在使用过程中,我认为用起来还不够简便.为此,我在mysqldb的基础上封装了一个Python类LightMysql. 先来看如何使用 example.py #!/usr/bin/env python # -*- coding: utf-8 -*- from Lig

实例讲解如何使用C++操作MySQL数据库类

用C++操作MySQL数据库类: 注释:这几个类对处理不是很大数据量的操作是很理想的, 但不适宜特大型的数据的查询,因为源码中将查询到的数据直接放入了内存. /* *  project: *           通用模块 ( 用 c++ 处理  mysql 数据库类,像ADO ) *                  *  description: * *           通过DataBase,RecordSet,Record,Field类,实现对mysql数据库的操作 *    包括连接.

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 参考示例代码,如下所示: /// <summary> /// MySql 数据库操作类 /// </summary> public class MySqlHelper { #region MysqlConnection private static MySql.Data.MySqlClient.MySqlConnection _mysqlConnection; /// <su

python-day11 Mysql 数据类操作

数据类操作#### insert#=====insert into student(sname,gender,class_id) values('ls','男',1)insert into class(caption) values('python1班')insert into teacher(tname) values('alex')insert into course(cname,tearch_id) values('python',1)insert into score(student_i

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1

python操作MySQL

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 ? 1 pip3 install pymysql 使用操作 1.执行SQL + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/usr/bin/env python # -*-

php最全基础,数组,函数,超全局变量,时间,回话,文件,php操作mysql

共享一份学习php最全基础语法知识的笔记 原文链接:http://www.cnblogs.com/oscn/p/3607757.html:略有修改   http://www.cnblogs.com/ljab/p/6125995.html略有修改 1.判断php短标记<??>是否适用,查看php配置文件php.ini中的"short_open_tag = On"2.官方的标记<?php?>  , <script language="php"

pymsql与ORM--python操作MySQL之利器

pymsql 原生模块 pymsql是python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL import pymysql # 创建连接,可在配置文件里写上字典,通过**dict传入 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 创建游标 cursor = conn.c