RubyスクリプトからMySQLにログインする
ActiveRecord上からDBに接続すると実際にどんなふうにDB操作をプログラムからやれるものかのかイメージしづらくなる。そこで今回はRubyのプログラムを書いて、MySQLにログインするためのスクリプトを書いてみる。
対象読者
構成
こんな感じ。 RDSとか使ってもよいのだけども、検証のためなので、擬似外部サーバとしてDockerを採用した。
STEP0: 前提とする環境
STEP1: MySQLコンテナをつくる
Docker使っているならわりと簡単。
docker pull mysql docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=root -d -p 33066:3306 mysql
これでMySQLサーバが作成された。 これでコンテナ上にもmysqlのプロセスも立ち上がっているはず。
STEP2: ローカルからコンテナ上のMySQLにログインしてみる
mysql -h 0.0.0.0 -uroot -p # パスワードは root mysql >
無事、mysqlにログインできたらOK.
STEP3: コンテナ上で少し下準備
コンテナ上のmysqlにログインしたまま、下準備をする。 具体的には、データベース・テーブルの作成を行ないます。
CREATE DATABASE test; mysql> CREATE TABLE users(id int, name varchar(50)); mysql> use test; mysql> show tables; mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | users | +----------------+ 1 row in set (0.00 sec) mysql> DESC users; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
こんな感じのデータベースになればOK.
STEP4: Rubyスクリプトを書く
test.rb
require 'mysql' connection = Mysql::connect("0.0.0.0", "root", "mysql", "test", 33066) # 文字コードをUTF8に設定 connection.query("set character set utf8") # DBに問い合わせ # 挿入するデータ data= { 1: 'hoge', 2: 'fuga' } # 用意したデータの分だけINSERT文を実行 data.each do |id, name| connection.query("INSERT INTO test.users(id, name) VALUES(#{id}, '#{name}')"); end # SELECT文の結果を取得 rs = connection.query("SELECT * FROM users") # 検索結果を表示 rs.each do |r| puts r.join ", " end # コネクションを閉じる connection.close
実行してみる
書いたスクリプトを実行してみる。
[localhost]$ ruby test.rb 1, hoge 2, fuga