微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Perl中提高多个数据库查询的效率?

我有一个驻留在多个方法中的查询,每个方法(查询)可以包含多个参数.我正在尝试减少文件大小和行数,使其更易于维护.以下是这样的事件:

$sql_update = qq { UPDATE database.table
                    SET column = 'UPDATE!'
                   WHERE id = ?
                };

$sth_update = $dbh->prepare($sql_update);

if ($dbh->err) {
    my $error = "Could not prepare statement. Error: ". $dbh->errstr ." Exiting at line " . __LINE__;
    print "$error\n";
    die;
}

$sth_rnupdate->execute($parameter);

if ($dbh->err) {
    my $error = "Could not execute statement. Error: ". $dbh->errstr ." Exiting at line " . __LINE__;
    print "$error\n";
    die;
}

这仅是一个示例,然而,存在各种其他选择示例,其仅包含要传递的一个参数,但是也存在具有两个或更多个参数的一些参数.我想我只是想知道是否可以将这一切封装到一个函数/方法中,传入一个参数数组,如何将参数填充到execute()函数中?

如果这是可能的,我可以编写一个方法,只需传入SQL查询和参数,并获取提取的记录的引用.这听起来安全吗?

解决方法

如果行数和可维护代码是您唯一的目标,那么您最好的选择是使用几个可用的精细ORM框架/库中的任何一个. Class::DBIDBIx::Class是两个很好的起点.为了以防万一,你担心花费额外的时间来学习这些模块 – 不要:我只花了一个下午才开始并提高工作效率.以Class :: DBI为例,您的示例只是一行:

Table->retrieve(id => $parameter)->column('UPDATE!')->update;

这些框架唯一的缺点(如果是这样)是非常复杂的sql语句需要编写自定义方法学习,这可能需要一些额外的时间(不要太多)来解决.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐