ruby-on-rails - 如何从 Rails 中的远程服务器数据库中提取数据?

标签 ruby-on-rails ruby dbi remote-server

我正在使用 tiny_tds 连接到远程数据库,它只用于 MySQL 和 Sql 服务器。他们是否有任何其他可用的 gem 可以访问任何供应商数据库?

最佳答案

您不了解数据库访问的工作原理。

我们使用驱动程序与数据库对话。数据库供应商有不同的用于连接的协议(protocol),因此由一个驱动程序来处理。

在该层之上,我们有一个与驱动程序对话的 API。那就像 DBI,它知道如何与不同的司机交谈。我们仍然必须使用数据库的查询语言来编写,但 DBI 为我们提供了一些优势。从一个数据库转换到另一个数据库是一件痛苦的事情,因为通常所有的查询都会改变,并且会出现“标准”之间的不一致。

在该层之上,我们有类似 ActiveRecord 或 Sequel 的东西,它们是 ORM,并且大部分与 DBM 无关。它们允许我们使用一致的语言来定义我们与数据库的连接、创建查询和处理交互。如果我们想与不同的数据库管理器对话,我们安装驱动程序,更改连接字符串,剩下的就可以了。

这节省了大量时间,是一件“非常好的事情”。您可以将 SQLite 用于您的概念验证,并将诸如 PostgreSQL、MySQL 或 Oracle 之类的东西用于您的生产系统,而无需更改查询。通常只有 DSN/连接字符串会发生变化。

通读 Sequel 的“Connecting to a database”文档以了解 ORM 可以做什么,以及“Sequel: The Database Toolkit for Ruby”和“Cheat Sheet”以了解 Sequel 可以做什么。

关于ruby-on-rails - 如何从 Rails 中的远程服务器数据库中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074834/

相关文章:

ruby-on-rails - rails : Get the controller and action of the current request

ruby-on-rails - rails : cattr_accessor and class variables

ruby-on-rails - 删除浅嵌套 Comment 类返回错误 "Couldn' t 查找没有 ID 的 Comment”(Rails)

sql - select count(*) 不适用于 perl DBI

python - BlazeDS Livecycle Data Services 有什么作用,而 PyAMF 或 RubyAMF 之类的东西不能做什么?

ruby-on-rails - 在 rails 生产环境中禁用服务器端缓存

java - 将示例 java 代码转换为 ruby​​ 以了解 ruby​​ 中的静态变量

ruby-on-rails - rails 4,全局化 gem,如何设置默认语言环境

Perl:是否有类似于 statistics_info 的 DBI 函数来检索 FK 引用和约束?

mysql - Perl DBI 模块中的操作失败未指示错误