linux远程访问sqlite数据库,如何用Perl访问SQLite数据库

SQLite是一个零配置、无服务端、基于文件的事务型数据库系统。由于它的轻量级,自包含和紧凑的设计,所以当你想要集成数据库到你的程序中时,SQLite是一个非常不错的选择。在这篇文章中,我会展示如何用Perl脚本来创建和访问SQLite数据库。我演示的Perl代码片段是完整的,所以你可以很简单地修改并集成到你的项目中。

b8a8b1dc228e265a5bbbcc52ec69f3b8.png

访问SQLite的准备

我会使用SQLite DBI Perl驱动来连接到SQLite3。因此你需要在Linux中安装它(和SQLite3一起)。

Debian、 Ubuntu 或者 Linux Mint

$ sudo apt-getinstall sqlite3 libdbd-sqlite3-perl

$ sudo yum install sqlite perl-DBD-SQLite

安装后,你可以检查SQLite驱动可以通过下面的脚本访问到。

#!/usr/bin/perl

my@drv=DBI->available_drivers();

printjoin("\n",@drv),"\n";

如果你运行脚本,你应该会看见下面的输出。

DBM

ExampleP

File

Gofer

Proxy

SQLite

Sponge

Perl SQLite 访问示例

下面就是Perl访问SQLite的示例。这个Perl脚本会演示下面这些SQLite数据库的常规管理。

创建和连接SQLite数据库

在SQLite数据库中创建新表

在表中插入行

在表中搜索和迭代行

在表中更新行

在表中删除行

useDBI;

usestrict;

# 定义数据库名称和驱动

my$driver="SQLite";

my$db_name="xmodulo.db";

my$dbd="DBI:$driver:dbname=$db_name";

# sqlite 没有用户名密码的概念

my$username="";

my$password="";

# 创建并连接到数据库

# 以下创建的文件名为 xmodulo.db

my$dbh=DBI->connect($dbd,$username,$password,{RaiseError=>1})

ordie$DBI::errstr;

printSTDERR"Database opened successfully\n";

# 创建表

my$stmt=qq(CREATE TABLE IF NOT EXISTS NETWORK

(ID INTEGER PRIMARY KEY AUTOINCREMENT,

HOSTNAME TEXT NOT NULL,

IPADDRESS INT NOT NULL,

OS CHAR(50),

CPULOAD REAL););

my$ret=$dbh->do($stmt);

if($ret<0){

printSTDERR $DBI::errstr;

}else{

printSTDERR"Table created successfully\n";

}

# 插入三行到表中

$stmt=qq(INSERT INTO NETWORK(HOSTNAME,IPADDRESS,OS,CPULOAD)

VALUES('xmodulo',16843009,'Ubuntu 14.10',0.0));

$ret=$dbh->do($stmt)ordie$DBI::errstr;

$stmt=qq(INSERT INTO NETWORK(HOSTNAME,IPADDRESS,OS,CPULOAD)

VALUES('bert',16843010,'CentOS 7',0.0));

$ret=$dbh->do($stmt)ordie$DBI::errstr;

$stmt=qq(INSERT INTO NETWORK(HOSTNAME,IPADDRESS,OS,CPULOAD)

VALUES('puppy',16843011,'Ubuntu 14.10',0.0));

$ret=$dbh->do($stmt)ordie$DBI::errstr;

# 在表中检索行

$stmt=qq(SELECT id,hostname,os,cpuloadfromNETWORK;);

my$obj=$dbh->prepare($stmt);

$ret=$obj->execute()ordie$DBI::errstr;

if($ret<0){

printSTDERR $DBI::errstr;

}

while(my@row=$obj->fetchrow_array()){

print"ID: ".$row[0]."\n";

print"HOSTNAME: ".$row[1]."\n";

print"OS: ".$row[2]."\n";

print"CPULOAD: ".$row[3]."\n\n";

}

# 更新表中的某行

$stmt=qq(UPDATE NETWORKsetCPULOAD=50whereOS='Ubuntu 14.10';);

$ret=$dbh->do($stmt)ordie$DBI::errstr;

if($ret<0){

printSTDERR $DBI::errstr;

}else{

printSTDERR"A total of $ret rows updated\n";

}

# 从表中删除某行

$stmt=qq(DELETEfromNETWORKwhereID=2;);

$ret=$dbh->do($stmt)ordie$DBI::errstr;

if($ret<0){

printSTDERR $DBI::errstr;

}else{

printSTDERR"A total of $ret rows deleted\n";

}

# 断开数据库连接

$dbh->disconnect();

printSTDERR"Exit the database\n";

上面的Perl脚本运行成功后会创建一个叫“xmodulo.db”的数据库文件,并会有下面的输出。

Databaseopened successfully

Tablecreated successfully

ID:1

HOSTNAME:xmodulo

OS:Ubuntu14.10

CPULOAD:0

ID:2

HOSTNAME:bert

OS:CentOS7

CPULOAD:0

ID:3

HOSTNAME:puppy

OS:Ubuntu14.10

CPULOAD:0

A total of2rows updated

A total of1rows deleted

Exitthe database

错误定位

如果你尝试没有安装SQLite DBI驱动的情况下使用Perl访问SQLite的话,你会遇到下面的错误。你必须按开始说的安装DBI驱动。

Can't locate DBI.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./script.pl line 3.

BEGIN failed--compilation aborted at ./script.pl line 3.

SQLite 的详细介绍:请点这里

SQLite 的下载地址:请点这里

本文由 LCTT 原创翻译,Linux中国 荣誉推出

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值