在 Sequel 个应用程序中使用多个数据库
Use more than one database in Sequel application
我正在使用 sequel 从不同的数据库中查询信息。使用以下代码
Sequel.connect(mmt018_db_connection_settings) do |db|
class ResultPlacementAssign < Sequel::Model(db[:result_placement_assign]); end
# do something with 'ResultPlacementAssign'
end
Sequel.connect(mmt024_db_connection_settings) do |db|
class PlatineMass < Sequel::Model(db[:platine_mass]); end
# do something with 'PlatineMass'
end
效果很好。但是如果我尝试将我的模型定义放在单独的文件中以便在需要时需要它们,似乎只有第一个数据库连接有效。
所以将上面的代码改为
Sequel.connect(mmt018_db_connection_settings) do |db|
require File.join(__dir__, 'models', 'm_mt_018', 'ResultPlacementAssign.rb')
# do something with 'ResultPlacementAssign'
end
Sequel.connect(mmt024_db_connection_settings) do |db|
require File.join(__dir__, 'models', 'm_mt_024', 'PlatineMass.rb')
# do something with 'PlatineMass'
end
使用模型定义
class ResultPlacementAssign < Sequel::Model(:result_placement_assign)
end
和
class PlatineMass < Sequel::Model(:platine_mass)
end
无效。
它告诉我数据库中不存在 platine_mass
,因为它仍在使用第一个连接。
我是不是遗漏了什么,或者如果模型定义是在单独的文件中定义的,是否真的没有办法告诉模型定义要使用哪个数据库连接。
您可以通过将数据库或数据集参数传递给 Sequel::Model()
来告诉 Sequel 给定模型使用哪个数据库。通常,您应该将数据库对象分配给常量:
DB1 = Sequel.connect(mmt018_db_connection_settings)
DB2 = Sequel.connect(mmt024_db_connection_settings)
class ResultPlacementAssign < Sequel::Model(DB1[:result_placement_assign]); end
class PlatineMass < Sequel::Model(DB2[:platine_mass]); end
我正在使用 sequel 从不同的数据库中查询信息。使用以下代码
Sequel.connect(mmt018_db_connection_settings) do |db|
class ResultPlacementAssign < Sequel::Model(db[:result_placement_assign]); end
# do something with 'ResultPlacementAssign'
end
Sequel.connect(mmt024_db_connection_settings) do |db|
class PlatineMass < Sequel::Model(db[:platine_mass]); end
# do something with 'PlatineMass'
end
效果很好。但是如果我尝试将我的模型定义放在单独的文件中以便在需要时需要它们,似乎只有第一个数据库连接有效。 所以将上面的代码改为
Sequel.connect(mmt018_db_connection_settings) do |db|
require File.join(__dir__, 'models', 'm_mt_018', 'ResultPlacementAssign.rb')
# do something with 'ResultPlacementAssign'
end
Sequel.connect(mmt024_db_connection_settings) do |db|
require File.join(__dir__, 'models', 'm_mt_024', 'PlatineMass.rb')
# do something with 'PlatineMass'
end
使用模型定义
class ResultPlacementAssign < Sequel::Model(:result_placement_assign)
end
和
class PlatineMass < Sequel::Model(:platine_mass)
end
无效。
它告诉我数据库中不存在 platine_mass
,因为它仍在使用第一个连接。
我是不是遗漏了什么,或者如果模型定义是在单独的文件中定义的,是否真的没有办法告诉模型定义要使用哪个数据库连接。
您可以通过将数据库或数据集参数传递给 Sequel::Model()
来告诉 Sequel 给定模型使用哪个数据库。通常,您应该将数据库对象分配给常量:
DB1 = Sequel.connect(mmt018_db_connection_settings)
DB2 = Sequel.connect(mmt024_db_connection_settings)
class ResultPlacementAssign < Sequel::Model(DB1[:result_placement_assign]); end
class PlatineMass < Sequel::Model(DB2[:platine_mass]); end