Ruby MySQL DBI实例
本文转至:http://www.yiibai.com/html/ruby/2013/0823189.html
本次章节将介绍如何用Ruby来访问数据库。类似的Perl DBI模块为Ruby脚本的Ruby DBI模块提供了一种数据库(这里用MySQL讲解)独立的接口。
DBI代表数据库无关的接口为Ruby DBI提供的Ruby代码和底层数据库之间的抽象层,允许你真的很容易切换数据库实现。它定义了一套方法,变量和约定来提供一致的数据库接口,独立于实际使用的数据库。
DBI可以连接以下:
-
ADO (ActiveX Data Objects)
-
DB2
-
Frontbase
-
mSQL
-
MySQL
-
ODBC
-
Oracle
-
OCI8 (Oracle)
-
PostgreSQL
-
Proxy/Server
-
SQLite
-
SQLRelay
DBI应用程序的体系结构
DBI是独立于现有的任何数据库后端。可以使用DBI操作使用Oracle,MySQL或Informix等,以下是架构示意图。

Ruby的DBI一般架构为使用两个层次:
-
数据库接口(DBI)层。这一层是独立于数据库,并提供了一组共同的访问方法所,使用的相同的方式而不管是什么样的数据库服务器。
-
(DBD)的数据库驱动程序层。这一层是依赖于数据库,不同的驱动程序提供了访问不同的数据库引擎。驱动程序用于PostgreSQL,MySQL,InterBase 或 Oracle等等。每个驱动程序解释DBI层的请求,并将它们映射到适用于某一特定类型的数据库服务器的请求。
先决条件:
如果想编写Ruby脚本来访问MySQL数据库,那么需要安装Ruby的MySQL模块。
此模块作为一个DBD如上所述,可以直接从网上下载 http://www.tmtm.org/en/mysql/ruby/
获取并安装Ruby/DBI:
可以下载并安装Ruby DBI模块从以下位置:
| http://rubyforge.org/projects/ruby-dbi/ |
在开始安装之前,请确保有root权限。执行以下步骤:
步骤 1
$ tar zxf dbi-0.2.0.tar.gz
步骤 2
在distrubution目录dbi-0.2.0 和配置setup.rb的脚本在该目录中。最常用的配置命令看起来像这样,不带参数的配置参数。此命令配置分配默认情况下,安装所有的驱动程序。
$ ruby setup.rb config
更具体地,提供了 --with 选项列出想使用的特定部位分布。例如,只配置主DBI模块和 MySQL DBD-level 驱动程序器,请发出以下命令:
$ ruby setup.rb config --with=dbi,dbd_mysql
步骤 3
最后一步是构建驱动程序并安装它使用下面的命令。
$ ruby setup.rb setup $ ruby setup.rb install
数据库连接:
假设我们要使用MySQL数据库。连接到数据库之前,请确保以下:
-
已经创建了数据库:TESTDB.
-
已经创建表 EMPLOYEE 在数据库 TESTDB 中.
-
这张表有以下几个属性 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME.
-
用户ID "testuser" 和密码 "test123" 已经设置可以访问数据库 TESTDB
-
Ruby 模块DBI 在机器上正确安装.
-
已经通过MySQL教程学习,了解MySQL基础知识和操作。
下面的例子连接MySQL数据库“TESTDB”
#!/usr/bin/ruby -wrequire"dbi"begin# connect to the MySQL server dbh = DBI.connect("DBI:Mysql:TESTDB:localhost","testuser","test123")# get server version string and display it row = dbh.select_one("SELECT VERSION()") puts "Server version: "+ row[0]rescue DBI::DatabaseError=> e puts "An error occurred" puts "Error code: #{e.err}" puts "Error message: #{e.errstr}"ensure# disconnect from server dbh.disconnect if dbh end
当运行这个脚本,它在我的Linux机器产生以下结果。
Server version:5.0.45
如果建立一个连接的数据源,然后继续使用,否则 dbh 设置为NILL值,e.err的和e::errstr返回错误代码和错误字符串返回,并保存到一个数据库句柄 dbh。最后出来之前,确保关闭数据库连接,并释放资源。
浙公网安备 33010602011771号