如何在没有典型数据库设置的情况下连接到rails中的数据库并检索结果

时间:2011-10-22 03:23:52

标签: mysql ruby-on-rails sql-server ruby-on-rails-3 oracle11g

我有一个使用Ruby on Rails的应用程序,用户将提供一个连接字符串,并将从他们的数据库中请求数据。我找到了一个链接,让我成为我的一部分,并想发布一个问题,看看是否有人有这方面的经验。这是我发现的东西:

def fetch_value
    sql = ActiveRecord::Base.connection();
    sql.execute "SET autocommit=0";
    sql.begin_db_transaction 
    id, value =
    sql.execute("SELECT id, value FROM sometable WHERE used=0 LIMIT 1 FOR UPDATE").fetch_row;
    sql.update "UPDATE sometable SET used=1 WHERE id=#{id}";
    sql.commit_db_transaction 

    value;
end

我正在编写此应用程序,以类似于phpmyadmin但在rails中。我不知道表的结构,但我想基本返回他们指定的查询的json结果。

我需要的是能够创建连接,检索结果列表并在json中输出结果而不需要太多知道。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

Active Record是一个对象关系映射库,这意味着它将(已知)表映射到Ruby中的对象。 Active Record确实提供了直接获取SQL的方法,就像您在示例中所做的那样,但它不是“正常”用例。在这种情况下,您需要更通用的东西。

您可以查看Sequal。它是一个Ruby库,它抽象了SQL语法,但不完全是Active Record的扩展,你有一个严格的表到对象映射。

如果Sequal仍然妨碍您使用原始MySql Ruby模块。非常强大但应该是最后的手段,因为你必须做手工工作。

还要记住,您仍然可以将Active Record用于您的应用程序数据库 - 也许用户需要注册和注册。然后在用户直接输入db详细信息的地方使用Sequal或Mysql Ruby模块。