第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 Ruby 入門教程 Ruby 入門教程 45 使用 Ruby 連接數(shù)據(jù)庫(kù)

使用 Ruby 連接數(shù)據(jù)庫(kù)

本章節(jié)讓我們學(xué)習(xí)如何用 Ruby 來(lái)連接數(shù)據(jù)庫(kù),最常用的數(shù)據(jù)庫(kù)是 Mysql,因此我們用 Mysql 來(lái)做為本章節(jié)的例子。

在安裝好Ruby的環(huán)境的基礎(chǔ)上,我們需要安裝 Ruby 連接 Mysql 的驅(qū)動(dòng) mysql2。

1. 安裝

1.1 安裝方式

在這里,我們通過(guò)安裝 mysql2 的 Gem 來(lái)實(shí)現(xiàn)。

gem install mysql2

1.2 配置選項(xiàng)

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

2. 使用

2.1 連接數(shù)據(jù)庫(kù)

比如我們現(xiàn)在 Mysql 的用戶名是 root,無(wú)密碼。需要連接本地?cái)?shù)據(jù)庫(kù)。

實(shí)例:

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

# ---- 輸出結(jié)果 ----
#<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"}>

解釋:

連接上數(shù)據(jù)庫(kù)返回 mysql2 客戶端實(shí)例。

2.2 操作數(shù)據(jù)庫(kù)

執(zhí)行數(shù)據(jù)庫(kù)的一系列操作我們需要使用query實(shí)例方法。

創(chuàng)建test_db數(shù)據(jù)庫(kù)。

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

創(chuàng)建一個(gè) students 表,里面有一個(gè)姓名、年齡字段。

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表中插入一條數(shù)據(jù):小明,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的所有數(shù)據(jù),需要對(duì)結(jié)果進(jìn)行迭代。

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

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

刪除name等于小明的這一條數(shù)據(jù)。

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

2.3 更多的鏈接選項(xiàng)

您可以在Mysql2::Client.new(...)中設(shè)置以下連接選項(xiàng):

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
  )

了解更多請(qǐng)去mysql2官網(wǎng)中查看。

3. 小結(jié)

本章節(jié)我們學(xué)習(xí)了連接 Mysql 的一個(gè) Gem:mysql2,學(xué)習(xí)了如何使用它來(lái)建立 Ruby 與 Mysql 的連接。學(xué)習(xí)了使用 mysql2 來(lái)進(jìn)行簡(jiǎn)單的增刪改查(CRUD)操作,并了解了一些常見(jiàn)的配置項(xiàng)。