如何从 Perl 连接到 MySQL 从特定表中选择记录的示例

举报
Tiamo_T 发表于 2021/11/25 16:10:04 2021/11/25
【摘要】 问:如何从 perl 程序连接到 MySQL 数据库?我喜欢连接到现有的 mysql 数据库并从特定表中选择记录。你能用一个简单的工作示例来解释吗? 答:您应该使用 perl DBI 模块连接到 MySQL 数据库

问:如何从 perl 程序连接到 MySQL 数据库?我喜欢连接到现有的 mysql 数据库并从特定表中选择记录。你能用一个简单的工作示例来解释吗?

答:您应该使用 perl DBI 模块连接到 MySQL 数据库,如下所述。

如果您没有安装 perl DBI 和 DBD::mysql 模块,请先cpan安装perl 模块。

# perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

在非常高的层次上,您必须执行以下三个步骤才能连接到 MySQL 数据库并获取数据。

1.连接MySQL数据库

在 DBI 模块中,您将使用连接函数,如下所示。

$dbc = DBI->connect($source, $username, $password)

DBI->connect 函数采用以下三个参数:

  • $source – 格式为“DBI:mysql:[database]:[hostname]”。将 [database] 和 [hostname] 替换为您系统中的值。在下面显示的示例中,它连接到在本地主机上运行的名为“mycompany”的数据库。
  • $username – 用于连接到 MySQL 数据库的用户名。
  • $password – 上述用户名的密码。

您应该将 DBI->connect 的返回值存储到一个变量,稍后您将使用该变量准备 sql 语句。

2.准备SQL语句

连接后,您将通过 prepare 命令使用 prepare sql 语句。您将使用 DBI->connect 函数返回的变量调用准备命令。


以下命令将准备 select sql 命令。

$out = $sql->execute()

您应该将准备命令的返回值存储到一个变量中,您将使用该变量来执行 sql 命令。

3.执行SQL语句

准备好 sql 语句后,您只需使用 execute 命令执行该语句。您将使用prepare 函数返回的变量调用execute 命令。

$out = $sql->execute()

4. 循环记录

执行该语句后,您将使用 fetchrow_array 函数遍历记录。您将使用准备函数返回的变量调用 fetchrow_array 函数。

while (($id, $name) = $sql->fetchrow_array())
{
 print "Id: $id Name: $name\n";
}

5. 运行 MySQL Perl 示例

下面的示例 perl 代码将连接 MySQL 数据库并从员工表中选择记录并打印它。

$ vi connect.pl
#!/usr/bin/perl

use DBI;

$source = "DBI:mysql:mycompany:localhost";
$username = "root";
$password = "MySecretPassword";

$dbc = DBI->connect($source, $username, $password)
or die "Unable to connect to mysql: $DBI::errstr\n";

$sql = $dbc->prepare("select id, name from employee");

$out = $sql->execute()
or die "Unable to execute sql: $sql->errstr";

while (($id, $name) = $sql->fetchrow_array())
{
 print "Id: $id Name: $name\n";
}

当您执行上面的 connect.pl perl 代码时,它将显示雇员表中的记录,如下所示。

$ ./connect.pl
Id: 100 Name: Thomas
Id: 200 Name: Jason
Id: 300 Name: Sanjay
Id: 400 Name: Nisha
Id: 500 Name: Randy
Id: 501 Name: Ritu
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。