Rails: 查询远程数据库上的特定 table
Rails: Querying a specific table on a remote db
我正在尝试构建一个 Rails 应用程序,该应用程序在远程数据库上查询 table 并将选定的信息显示为 HTML。远程数据库是 SQL Anywhere 16。信息位于数据库的特定 table 上,例如:db.inventory
。列名设置如下:primarykey | ItemName | ItemPrice | ItemQuantity | etc
。我想做的是提取一些信息并显示,例如 <itemname /> <itemprice /> <itemquantity />
。
远程数据库是 SQL Anywhere 16,所以我在 gem 文件中安装了 sqlanywhere
gem 和 activerecord-sqlanywher-adapter
。
除了本地 sqlite 数据库之外,我还在 database.yml
中设置了连接信息:
my_external_database:
adapter: sqlanywhere
encoding: utf-8
username: (username)
password: (password)
server: (name of the server)
host: (ip of the server)
我的模型是这样设置的:
class MyExternalModel < ActiveRecord::Base
establish_connection(:my_external_database)
set_table_name 'tablename'
end
我不明白的是 (1) 如何测试连接,以及 (2) 如何在数据库上查询我需要的特定 table。数据库中有多个table,但我只想查询特定的一个。第三,我不确定我将如何实际显示这些数据,但是......小步骤。
我认为 set_table_name
会让您指定特定的 table。
您还可以更改主键...
self.primary_key = 'primaryKey'
self.table_name = 'db.inventory'
您可以通过 运行 rails console
然后执行 MyExternalModel.first
或 MyExternalModel.find(1)
从健全的角度测试连接
假设您不写入远程数据库,您可以按原样在测试中使用该模型(测试准备只会清除您的测试数据库)。
我正在尝试构建一个 Rails 应用程序,该应用程序在远程数据库上查询 table 并将选定的信息显示为 HTML。远程数据库是 SQL Anywhere 16。信息位于数据库的特定 table 上,例如:db.inventory
。列名设置如下:primarykey | ItemName | ItemPrice | ItemQuantity | etc
。我想做的是提取一些信息并显示,例如 <itemname /> <itemprice /> <itemquantity />
。
远程数据库是 SQL Anywhere 16,所以我在 gem 文件中安装了 sqlanywhere
gem 和 activerecord-sqlanywher-adapter
。
除了本地 sqlite 数据库之外,我还在 database.yml
中设置了连接信息:
my_external_database:
adapter: sqlanywhere
encoding: utf-8
username: (username)
password: (password)
server: (name of the server)
host: (ip of the server)
我的模型是这样设置的:
class MyExternalModel < ActiveRecord::Base
establish_connection(:my_external_database)
set_table_name 'tablename'
end
我不明白的是 (1) 如何测试连接,以及 (2) 如何在数据库上查询我需要的特定 table。数据库中有多个table,但我只想查询特定的一个。第三,我不确定我将如何实际显示这些数据,但是......小步骤。
我认为 set_table_name
会让您指定特定的 table。
您还可以更改主键...
self.primary_key = 'primaryKey'
self.table_name = 'db.inventory'
您可以通过 运行 rails console
然后执行 MyExternalModel.first
或 MyExternalModel.find(1)
假设您不写入远程数据库,您可以按原样在测试中使用该模型(测试准备只会清除您的测试数据库)。