105

データベースを処理するスタンドアロンの Ruby スクリプトを作成する必要があります。Rails 3で以下のコードを使用しました

@connection = ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:host => "localhost",
:database => "siteconfig_development",
:username => "root",
:password => "root123"
)

results = @connection.execute("select * from users")
results.each do |row|
puts row[0]
end

しかし、エラーが発生しています:-

`<main>': undefined method `execute' for #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00000002867548> (NoMethodError)

ここで何が欠けていますか?

解決

denis-bu から解決策を取得した後、次の方法で使用しましたが、それも機能しました。

@connection = ActiveRecord::Base.establish_connection(
            :adapter => "mysql2",
            :host => "localhost",
            :database => "siteconfig_development",
            :username => "root",
            :password => "root123"
)

sql = "SELECT * from users"
@result = @connection.connection.execute(sql);
@result.each(:as => :hash) do |row| 
   puts row["email"] 
end
4

5 に答える 5

168

多分これを試してください:

ActiveRecord::Base.establish_connection(...)
ActiveRecord::Base.connection.execute(...)
于 2013-03-14T11:48:56.277 に答える
100
connection = ActiveRecord::Base.connection
connection.execute("SQL query") 
于 2013-03-14T11:52:36.637 に答える
4

これはどう :

@client = TinyTds::Client.new(
      :adapter => 'mysql2',
      :host => 'host',
      :database => 'siteconfig_development',
      :username => 'username',
      :password => 'password'

sql = "SELECT * FROM users"

result = @client.execute(sql)

results.each do |row|
puts row[0]
end

質問で指定しなかったため、TinyTds gem をインストールする必要があります。Active Record は使用しませんでした。

于 2013-03-14T11:45:40.200 に答える