ruby mysql dbi_Ruby MySQL DBI实例

本次章节将介绍如何用Ruby来访问数据库。类似的Perl DBI模块为Ruby脚本的Ruby DBI模块提供了一种数据库(这里用MySQL讲解)独立的接口。

DBI代表数据库无关的接口为RubyDBI提供的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等,以下是架构示意图。

a54d4b340ab2eee209d040d63691bb93.png

Ruby的DBI一般架构为使用两个层次:

数据库接口(DBI)层。这一层是独立于数据库,并提供了一组共同的访问方法所,使用的相同的方式而不管是什么样的数据库服务器。

(DBD)的数据库驱动程序层。这一层是依赖于数据库,不同的驱动程序提供了访问不同的数据库引擎。驱动程序用于PostgreSQL,MySQL,InterBase 或 Oracle等等。每个驱动程序解释DBI层的请求,并将它们映射到适用于某一特定类型的数据库服务器的请求。

先决条件:

如果想编写Ruby脚本来访问MySQL数据库,那么需要安装Ruby的MySQL模块。

获取并安装Ruby/DBI:

可以下载并安装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 serverdbh=DBI.connect("DBI:Mysql:TESTDB:localhost","testuser","test123")# get server version string and display itrow=dbh.select_one("SELECT VERSION()")puts"Server version: "+row[0]rescueDBI::DatabaseError=>e

puts"An error occurred"puts"Error code: #{e.err}"puts"Error message: #{e.errstr}"ensure# disconnect from serverdbh.disconnectifdbhend

当运行这个脚本,它在我的Linux机器产生以下结果。

Serverversion:5.0.45

如果建立一个连接的数据源,然后继续使用,否则 dbh设置为NILL值,e.err的和e::errstr返回错误代码和错误字符串返回,并保存到一个数据库句柄 dbh。最后出来之前,确保关闭数据库连接,并释放资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

api demo 京东商品详情_jd-demo

一个仿京东的网站:后端使用java,基本架构:springMVC spring mybatis;前端技术:HtmlCSSJQueryReactSass...后台接口说明:####1.统计用户、商品、订单数量/manage/statistic/base_count.dorequest无respons…

mysql linux 迁移mac_Mac和Linux之间传输数据,并导出mysql数据到本地

从 本地 复制到 远程复制文件:命令格式:scp local_file remote_usernameremote_ip:remote_folder或者scp local_file remote_usernameremote_ip:remote_file或者scp local_file remote_ip:remote_folder或者scp local_file remote_ip:remote_file第1,2个…

mysql与tomcat_mysql数据库与tomcat服务器的一些细节问题

java程序使用数据库的方法1.使用jndi数据源核心代码:initCtx new InitialContext()DataSource ds;ds (DataSource) initCtx.lookup("java:comp/env/jdbc/mysql1");conn ds.getConnection();----------配置服务器信息web项目web.xml中配置MySQL DB Conn…

python出现严重错误_安装出现严重错误!大神帮忙分析下原因

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼查看日志结果如下:(看不懂。。。)[2874:052C][2018-07-05T22:18:14]e000: Error 0x80070643: Failed to install MSI package.[2874:052C][2018-07-05T22:18:14]e000: Error 0x80070643: Failed to configure per-user …

信息安全学习路线图_Python学习图谱:学习到困惑的时候可以参考的图谱

很多同学都想学习Python,最近就连地产大佬潘石屹都要学Python。刚刚开始学习Python的同学来说,不知道从哪里下手,学习起来比较困惑,没有找到一个好的学习方法,没有高手带路,没有人督促你学习,或…

如何更新mysql数据库字段_如何使用MySQL一个表中的字段更新另一个表中字段

1,修改1列update student s, city cset s.city_name c.namewhere s.city_code c.code;2,修改多个列update a, bset a.titleb.title, a.nameb.namewhere a.idb.id•子查询update student s set city_name (select name from city where code s.city_c…

mysql到mysqli转变表_利用mysql和mysqli取得mysql的所有数据库和库中的所有表

/*** mysqli op mysql demo*//***公用函数*//***功能:列出一个数据库的所有表*param$dbname*param$con*/functionlist_tables($dbname,$con){mysql_select_db($dbname,$con)or die("选择数据库失败!");$res mysql_query("SHOW TABLES");$table…

zabbixdocker里的mysql_docker zabbix安装部署(数据库和web及zabbix服务都用docker版)

一、docker zabbix相关镜像下载分别docker pull (mysql:5.7 、zabbix/zabbix-agent 、zabbix/zabbix-server-mysql 、zabbix/zabbix-web-nginx-mysql)[rootald8 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql 5.7 98455b9624a9 12 days ago 372MBzabbix/zabbix…

mysql gui 修改密码_MySQL修改root密码的各种方法整理

整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助!方法1: 用SET PASSWORD命令mysql -u rootmysql> SET PASSWORD FOR rootlocalhost PASSWORD(newpass);方法2:用mysqladminmysqladmin -u root password "newpass"如果root已…

mysql 物理结构设计_数据库的物理结构设计指的是什么?

Log Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节Start LSN,这个redo log文件开始日志的lsn,占用8字节Log File Number,总是为0,占用4字节Created By&#x…

mysql 监控 开源_强大的开源企业级数据库监控利器Lepus

Lepus监控简单介绍开源企业级数据库监控系统简洁、直观、强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库监控更简单简单介绍:Lepus(天兔)数据库企业监控系统是一套由专业DBA针对互联网企业开发的一款专业、强大…

python的fopen函数_linux c函数(fgets,fputs,fopen)

clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include定义函数 void clearerr(FILE * stream);函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。返回值fclose(关闭文件)相关函数 close,fflush,fopen,setbuf表头文…

java整数转字符串_Java整型与字符串相互转换(转)

1如何将字串 String 转换成整数 int?A. 有两个方法:1). int i Integer.parseInt([String]); 或i Integer.parseInt([String],[int radix]);2). int i Integer.valueOf(my_str).intValue();注: 字串转成 Double, Float, Long 的方法大同小异.2 如何将整数 int 转换成字串 St…

景点门票销售系统系统java_某景点门票销售管理系统

【实例简介】可用于学校实训课大作业,有数据库有文档 可用于学校实训课大作业,有数据库有文档 可用于学校实训课大作业,有数据库有文档 可用于学校实训课大作业,有数据库有文档【实例截图】【核心代码】某景点门票销售管理系统└─…

java字符串的哈希码_获取Java中字符串的哈希码

该hashCode()方法用于获取字符串的哈希码。此方法不接受任何参数,因为它是默认方法,并且它返回哈希码值。hashCode()给出了演示Java方法的程序,如下所示:示例import java.io.*;public class Demo {public static void main(String…

java sql2008的增删改查_SQL server数据库增删改查练习

--创建测试数据create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))insert into Student values(01 , N赵雷 , 1990-01-01 , N男)insert into Student values(02 , N钱电 , 1990-12-21 , N男)insert into Student values(03 , N孙风 , 1…

java script中==和===_Java Script 中 ==(Equal) 和 === (Identity Equal) 的区别和比较算法逻辑...

判断两个变量是否相等在任何编程语言中都是非常重要的功能。JavaScript 提供了 和 两种判断两个变量是否相等的运算符,但我们开始学习的时候 JavaScript 的时候,就被一遍又一遍的告知: 要求变量的类型和值均相等,才能返回true。…

java android 数组_Android开发基础之Java 数组

Java 数组数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0&…

java 多态与重载的区别_java实现多态 方法的重写和重载的区别

1.方法的重写思路:先写一个父类People,在类中定义一个 print方法 ,然后写一个子类 Student 继承父类,重写print方法。//父类class People{public void print(){System.out.println("这是父类的print方法!");…

java mvel_MVEL实现java直接根据公式计算结果

工具类import java.math.BigDecimal;import java.util.Map;import java.util.Map.Entry;import java.util.stream.Collectors;import org.mvel2.CompileException;import org.mvel2.MVEL;import org.mvel2.PropertyAccessException;/*** 计算工具** author valsong* date Jul 2…