亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

使用 Ruby 連接數據庫

本章節讓我們學習如何用 Ruby 來連接數據庫,最常用的數據庫是 Mysql,因此我們用 Mysql 來做為本章節的例子。

在安裝好Ruby的環境的基礎上,我們需要安裝 Ruby 連接 Mysql 的驅動 mysql2。

1. 安裝

1.1 安裝方式

在這里,我們通過安裝 mysql2 的 Gem 來實現。

gem install mysql2

1.2 配置選項

  • --with-mysql-dir[=/path/to/mysqldir]:指定安裝 Mysql 的目錄,mysql2 的 gem 將不使用mysql_config二進制文件,而是查看mysqldir/lib和``mysqldir/include作為庫和頭文件。該選項不可以和–with-mysql-config`共同使用。
  • --with-mysql-config[=/path/to/mysql_config]:指定Mysql副本提供的二進制文件mysql_config的路徑,mysql2 將詢問此二進制文件有關編譯器和連接器的參數信息。該選項和--with-mysql-dir不可共同使用。

2. 使用

2.1 連接數據庫

比如我們現在 Mysql 的用戶名是 root,無密碼。需要連接本地數據庫。

實例:

require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "root")
p client

# ---- 輸出結果 ----
#<Mysql2::Client:0x00007f8ae50200b8 @read_timeout=nil, @query_options={:as=>:hash, :async=>false, :cast_booleans=>false, :symbolize_keys=>false, :database_timezone=>:local, :application_timezone=>nil, :cache_rows=>true, :connect_flags=>2148540933, :cast=>true, :default_file=>nil, :default_group=>nil, :host=>"localhost", :username=>"root"}>

解釋:

連接上數據庫返回 mysql2 客戶端實例。

2.2 操作數據庫

執行數據庫的一系列操作我們需要使用query實例方法。

創建test_db數據庫。

client.query("create database if not exists test_db character set UTF8mb4 collate utf8mb4_bin;")

創建一個 students 表,里面有一個姓名、年齡字段。

client.query(%{
  create table if not exists test_db.students(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(255),
    age INT UNSIGNED,
    PRIMARY KEY ( id )
  );
})

students表中插入一條數據:小明,10歲。

client.query("insert into test_db.students (name, age) values ('小明', 10);")

students表中小明的年齡更改為11歲。

client.query("update test_db.students set age = 11 where name = '小明';")

查看students的所有數據,需要對結果進行迭代。

results = client.query("select * from test_db.students;")
results.each do |result|
  p result
end

# ---- 輸出結果 ----
{"id"=>1, "name"=>"小明", "age"=>11}

刪除name等于小明的這一條數據。

client.query("delete from test_db.students where name = '小明';")

2.3 更多的鏈接選項

您可以在Mysql2::Client.new(...)中設置以下連接選項:

Mysql2::Client.new(
  :host,
  :username,
  :password,
  :port,
  :database,
  :socket = '/path/to/mysql.sock',
  :flags = REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION | MULTI_STATEMENTS,
  :encoding = 'utf8',
  :read_timeout = seconds,
  :write_timeout = seconds,
  :connect_timeout = seconds,
  :connect_attrs = {:program_name => $PROGRAM_NAME, ...},
  :reconnect = true/false,
  :local_infile = true/false,
  :secure_auth = true/false,
  :ssl_mode = :disabled / :preferred / :required / :verify_ca / :verify_identity,
  :default_file = '/path/to/my.cfg',
  :default_group = 'my.cfg section',
  :default_auth = 'authentication_windows_client'
  :init_command => sql
  )

了解更多請去mysql2官網中查看。

3. 小結

本章節我們學習了連接 Mysql 的一個 Gem:mysql2,學習了如何使用它來建立 Ruby 與 Mysql 的連接。學習了使用 mysql2 來進行簡單的增刪改查(CRUD)操作,并了解了一些常見的配置項。