Ruby 请建议 rails 里数据管理

hbm · 2023年12月04日 · 最后由 ericguo 回复于 2023年12月10日 · 794 次阅读

后台用 python 获取和处理数据,会用到一些机器学习的库,所以基于 python。

打算用 rails 全栈来做 web.

请问大家怎么建议 python/rails 之间的数据管理:

  1. 只用一个 rails 数据库,Python 子系统通过 API 写入,读取数据
  2. 只用一个 rails 数据库,Python 子系统直接通过 sql 写入,读取数据
  3. python 子系统用自己的数据库,基于 sqlalchemy, 写一个任务周期性把新数据导入 rails

2) 可能不好,请问 1/3 大家如何选择和建议。谢谢!

Rails 可以同时连接多个数据库。如果 python 子系统的数据没什么兼容问题,可以不导入直接读。

建议全部用 Python 除非你的公司很大,需要建立各种山头 😁

Rei 回复

python 数据如果通过 sqlalchemry 定义,在 rails 里要通过 activeRecord 再定义一次?数据库更改,迁移的时候要注意同步?

huobazi 回复

django 虽然也不错,但感觉 rails 还是更成熟易用一些....

hbm 回复

Rails 里面不用定义,ActiveRecord 是动态读取数据库里面的表信息。你需要为外部数据库的表创建 model,并且设置连接信息,不需要 migration。

搜了个例子 https://stackoverflow.com/a/35492504

你可以跟 python 项目约定好命名规则,id 用 id 整数递增,字段名用下划线,这样就可以很大程度兼容 AR 的约定。然后给 Rails 项目开一个只读权限账号,避免 Rails 项目不小心写入。

Rei 回复

这个方案很好,非常感谢 Rei!

hbm 回复

甚至 AR 的约定也不是必须的,现在 Rails 7.1 支持组合主键,数据库的单独 ID 主键本来就是可以配置的,字段名下划线也不是必须的。还有个 readonly 方法可以强制 AR 为只读(不过还是建议开一个只读帐号,省的后面扯皮麻烦)

module Edoc2
  class ProjectInfo < ApplicationRecord
    establish_connection :edoc2v5 unless Rails.env.test?
    self.table_name = "eform_thape_projectinfo"

    def readonly?
      true
    end

  end
end

这套就是 Rails 抢地盘生存的吃饭法门啊!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号