rails应用与多数据库的连接

rails与多数据库的连接有插件模式,也有原生模式,本文参考互联网资料,总结出来,并实际连接成功
1、配置database.yml
development:
adapter: mysql
encoding: utf8
database: myapp
username: root
password:
host: localhost

test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

production:
adapter: mysql
encoding: utf8
database: myapp
username: root
password:
host: localhost

typo:
adapter: mysql
database: typo
username: root
password:
host: localhost
说明:
1、typo是外部数据库,这是一个rails安装之后就存在的一个实例应用的库;
2、其他的development、test、production都是缺省的主数据库,这是缺省配置;
3、yml文件的书写方式非常严格,typo描述部分的下面各个参数必须采用tab的方式对齐,在netbeans中可以识别此格式,如果格式不对,将提示错误。

二、编写一个外部库的基础模型类
创建external_data.rb这个模型类
class ExternalData < ActiveRecord::Base
self.abstract_class = true
establish_connection :typo
end
说明:
1、self.abstract_class = true,表示这个模型类不会与库中的任何表有关系,也就是一个抽象的类。
2、establish_connection :typo,就是配置连接

三、编写一个具体的模型类
下面是typo库的表
+---------------------+
| Tables_in_typo |
+---------------------+
| articles |
| articles_categories |
| blacklist_patterns |
| categories |
| comments |
| page_caches |
| pages |
| pings |
| resources |
| schema_info |
| sessions |
| settings |
| sidebars |
| trackbacks |
| users |
+---------------------+
我们随便选择一个如,pages,实现它的模型;
创建文件page.rb,内容如下:
class Page<ExternalData
end
说明:
1、关键在于page这个类是从刚才定义的抽象类ExternalData中继承而来,有一个好处是这个抽象类下衍生出来的各个模型类可以共用连接池,减少数据库连接的消耗。
2、这种采用继承的方式非常方便创建其他表对应的类,不需要在模型中重复书写establish_connection :typo这样的语句。比如对settings这个表,创建setting.rb模型类文件,代码如下:
class Setting<ExternalData
end
与缺省库中的模型操作起来一样,不一样的就是父类不同而已。

四、测试看看是否成功
ruby script/console
>> ExternalData
=> ExternalData(abstract)
>> Page
=> Page(id: integer, name: string, title: string, body: text, body_html: text, text_filter: string, user_id: integer, created_at: datetime, updated_at: datetime)
>> Setting
=> Setting(id: integer, name: string, value: string)

没有问题。
CodeIgniter数据库配置文件database.php的用法实例分析 综上所述,本文介绍了CodeIgniter中数据库配置文件database.php的用法,并提供了相应的源代码示例。使用上述示例代码中的配置,可以连接到名为"your_database"的数据库。可以定义多个数据库组,每个组都有一个唯一的键名,例如"default"、"second_db"等。默认值为"default",表示使用$db数组中名为"default"的数据库组配置。方法执行了一个简单的查询,获取了名为"users"的数据库表的所有记录。如果您的数据库表具有统一的前缀,可以在此处设置。 阅读详情

相关推荐

第3.4章 机器人第三方库实战总结(四):G2O优化库从入门到实战(附SLAM实例代码)

自定义边同样是满足复杂应用需求的重要手段。自定义边时,需要明确边所连接的顶点类型以及边所表示的误差项的计算方式。假设我们要定义一条边,用于约束两个上述自定义顶点之间的相对位姿和传感器偏移量关系。我们可以这样定义边类:public:// 计算误差// 计算雅可比矩阵// 读盘和存盘函数,这里暂不实现。

行知SLAM 327

Ruby 版数据库连接

Ruby 版数据库连接池, 可以参考。 数据库是postgresql

Ruby-Multiverse让Rails支持多数据库

扩展数据库最简单的方法之一是将较大的,不经常连接的表移动到单独的数据库。 ActiveRecord支持多个数据库,但是Rails没有提供管理它们的方法。 Multiverse正好实现了这个功能。

rails 5 功能新增及改变

1、ApplicationRecord在Rails4中所有的模型都继承自ActiveRecord::Base,不过在Rails5中新引进了一个叫ApplicationRecord的类,存放在: app/models/application_record.rb中,所有Rails5应用都会有这个类, 它的内容非常简单: class ApplicationRecord < Act...

weixin_30381317的博客 321

[ruby on rails]同时链接多数据库

database.yml default: &default encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> wait_timeout: 60 oracle_development: #名字可自定义,但是不能重复。 <<: *default adapter: oracle_enhanced host: xxx.xxx.xxx.xx username: roo.

深度的博客 392

why we use abstract_class in active_record ?

in the sample below: class BookLib < ActiveRecord::Base self.abstract_class = true end since abstract_class is set to true, this model class shifts to be a fade one(no table will be create ...

up2u0609 154

如何在Rails 6中管理多个数据库

随着Rails 6的发布,宣布的新功能之一是对多个数据库的支持。 当在我们的一个应用程序中,我在努力有效地管理独立的DB时,这让我大吃一惊。 人们想要这种支持的原因有很多,例如: 使用SQL数据库存储用户数据,使用NoSQL存储位置数据 有多个SQL数据库来管理单独的应用程序,但是一个应用程序可能需要直接访问另一个数据库 管理多个NoSQL和Redis数据库以存储不同种类的数据等 当面...

编程故事的地方 571

codeigniter mysql -1_mysql-Codeigniter-多个数据库连接

mysql-Codeigniter-多个数据库连接我必须从主数据库中检索MySQL数据库信息,然后连接到该数据库,并获取一些记录。我的意思是持有一个数据库,我想加载另一个数据库。Codeigniter是否可能? 现在,我在模型中使用以下代码行。function connectDb($credential){$config['hostname'] = $credential['server'];$c...

weixin_33454551的博客 297

CodeIgniter实战指南:轻量PHP框架快速上手MVC落地

MVC架构是Web开发的基础范式,其核心在于职责分离可维护性。CodeIgniter以极简设计实现清晰的Model-View-Controller分层,不依赖复杂自动加载或深度抽象,让开发者直面HTTP请求处理本质。它用确定性的路径配置、原生友好的数据库操作和零模板引擎的视图机制,降低学习调试门槛,特别适合政务系统、遗留项目迭代及资源受限环境(如512MB内存VPS)下的快速交付。结合MySQL碎片分析、图片安全上传、高并发轻量响应等真实工程问题,CodeIgniter提供了一条‘看得见、改得了、压不垮

congran6617的博客 571

codeigniter mysql 存储过程_Codeigniter 使用 Mysql 存储过程

执行存储过程$query = $this -> db -> query('CALL YOU_SP_NAME');$result = $query -> result();这个问题不大,就像是执行普通 SQL 语句一样。使用存储过程遇到的问题在用了存储过程之后,发现数据库链接并不能使用 持续链接,即 需要把 database.php 里的 $db['pconnect'] 设置为 ...

weixin_34007963的博客 141

Codeigniter 使用 Mysql 存储过程

本篇文章由:http://xinpure.com/codeigniter-using-mysql-stored-procedures/ 执行存储过程 $query = $this -> db -> query('CALL YOU_SP_NAME'); $result = $query -> result(); 这个问题不大,就像是执行普通 SQL 语句一样。 使用存储过程遇...

weixin_30599769的博客 115

PHP Doctrine ORM 持久化(一)

原文:zh.annas-archive.org/md5/b34bd0528134548b9e95e991c08297b5 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 Doctrine 2 已成为 PHP 最流行的现代持久化系统。它 Symfony2 框架的标准版一起分发,可以独立在任何 PHP 项目中使用,并 Zend Framework 2,CodeIgniter 或 Laravel 集成得非常好。它高效,自动抽象出流行的数据库管理系统,支持 PHP 5.3 功能(包括命名空间),可以

龙哥盟 1580

CodeIgniter框架同时连接多个数据库

1. 描述:CodeIginter有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等......) 2. 文件位置:该配置文件位于application/config/database.php 3. 注意事项:除默认数据库外其他的数据库的pconnect键名对应的键值为FALSE 4. 示例: $activ

专栏坐家 2205

ci mysqli和mysql_PHP连接mysqlmysqli的区别用法

一、mysqlmysqli的概念相关:在php5版本之前,一般是用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程;在php5版本以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库...

weixin_39637975的博客 168

ci批量查询mysql数据库_CodeIgniter-CI4 mysql数据库配置及数据库查询

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序。随着CI4.0的发布,CI4.0的使用者们也开始了关于CI4.0的相关文档整理,不得不说CI4.0的架构及语法,越来越贴近于很多PHP的主流框架,本文主要介绍CI4框架CodeIgniter, 配置mysql数据库,并进行数据库查询的相关操作。01.在ap...

weixin_35523284的博客 451

CodeIgniter连接数据库及快速入门

一、数据库配置   CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 该配置文件位于application/config/database.php. 你也可以通过放置不同的database.php文件到特定的环境配置文件夹里来设置特定环境的数据库连接值.   配件文件存放在一个如下格...

weixin_30522095的博客 156

codeigniter mysql 挂掉_Codeigniter 使用 Mysql 存储过程

执行存储过程$query = $this -> db -> query('CALL YOU_SP_NAME');$result = $query -> result();这个问题不大,就像是执行普通 SQL 语句一样。使用存储过程遇到的问题在用了存储过程之后,发现数据库链接并不能使用 持续链接,即 需要把 database.php 里的 $db['pconnect'] 设置为 ...

weixin_36397509的博客 129

CodeIgniter数据库配置

from http://codeigniter.org.cn/user_guide/database/configuration.html CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 该配置文件位于application/config/database.php.

逐日者 7001

php ci laravel,PHP 框架 ci 和 laravel 的问题

我们用 laravel 或 ci 框架中的数据库配置,然后在每个控制器中取出数据。这样是不是和每个原生 php 单页写一个 mysql_contact ,就是每个页面都要连接数据库一次。本质是不同的,就是说 php 框架可以为我们配置一个持久数据连接,减少每个页面时的数据库重复连接开销吗?有人说框架中也是每个页面连接一次,并不能减少连接次数。到底框架中和原生单页中的连接方式频率是一样的吗。另外支持...

weixin_42175035的博客 325

中级宏观经济学 何樟勇:学习课件PPT+配套习题及答案,二期动态模型,三期动态模型

中级宏观经济学 何樟勇:学习课件PPT+配套习题及答案中级宏观经济学 何樟勇:学习课件PPT+配套习题及答案中级宏观经济学 何樟勇:学习课件PPT+配套习题及答案中级宏观经济学 何樟勇:学习课件PPT+配套习题及答案中级宏观经济学 何樟勇:学习课件PPT+配套习题及答案

上一篇: java 拼音首字母搜索功能(转)
下一篇: centos 5.5 rails 安装 参考
findingwork
博客等级 码龄17年 1粉丝 72原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值