如何使用rails运行简单的MYSQL查询
我想用rails运行一个简单的MYSQL查询
Select movie-title, movie-director from moving order by rating desc limit 5;
我不想要所有开销创建模型。 我只想运行查询。
做这个的最好方式是什么?
我甚至无法连接
这是我的控制器代码
ActiveRecord::Base.establish_connection ({ :adapter => "mysql2", :host => "some-rds.amazon.com", :username => "root", :password => "root", :database => "blah"})
这将生成此错误ActiveRecord :: ConnectionNotEstablished
谢谢
movie_title = 'Planet of the Apes' sql = "SELECT * FROM movies WHERE title = #{ActiveRecord::Base.sanitize(movie_title)}" ActiveRecord::Base.connection.execute(sql)
只需在控制台中使用ModelName.find_by_sql(“您的SQL查询”)。
嘿,为了拳头陡峭,确保你有八个gem并安装支持Mysql:
配置Rails应用程序
在本节中,我们将修改Rails应用程序服务器,以便它们开始使用我们刚刚设置的数据库服务器。
安装数据库服务器库
首先要做的是安装必要的数据库。 在我们的例子中,它是MySQL的开发包。
运行以下命令安装MySQL开发包mysql-devel:
yum install -y mysql-devel
配置database.yml对于Rails
Rails应用程序的数据库设置保存在/ config目录中的database.yml文件中。
运行以下命令以使用nano文本编辑器编辑database.yml文件:
# Make sure to enter your application deployment directory # Example: # cd /var/www/my_app nano config/database.yml
打开此文件后,您将看到数据库设置,除以环境名称。 由于应用程序需要使用生产环境运行,因此我们编辑该配置。
用以下内容替换生产:YML代码块,更改必要的位以适合您自己的设置配置,例如IP地址等。
# Example: # production: # adapter: mysql # encoding: utf8 # database: [database name] # username: [user name] # password: [password] # host: [server IP address] # port: [port number] # protocol: [protocol] # pool: [connection pool] production: adapter: mysql encoding: utf8 database: rails_myapp username: rails_myapp_user password: pwd host: 128.199.233.36 port: 3306 pool: 10
注意:如上例所示,您可能需要指定协议。
注意:pool参数包含可用的最大并发数据库连接槽(即池)的数量。 您需要评估您的需求并相应地设置一个数字。
按CTRL + X保存并退出并用Y确认。
获取mysqlgem
使用以下内容开始使用nano编辑Gemfile:
nano Gemfile
将以下行添加到文件中:
gem 'mysql'
按CTRL + X保存并退出并用Y确认。
使用bundle安装新gem:
bundle install
就是这样! 从现在开始,您的Rails应用程序服务器将使用您的全新数据库服务器进行所有操作。
您可以在以下url找到更多信息: https : //www.digitalocean.com/community/tutorials/scaling-ruby-on-rails-setting-up-a-dedicated-mysql-server-part-2
在中配置数据库连接
/config/database.yml
在控制器中,
def connect_and_fetch result_obj = ActiveRecord::Base.connection.execute("select column from table") @rows = [] index = 0 result_obj.each do |row| @rows[index] = row index += 1 end end
在html视图中,
Result : <%= @rows%>