English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby Verbindung Mysql MySql2

Im vorherigen Kapitel haben wir die Verwendung von Ruby DBI vorgestellt. In diesem Kapitel werden wir eine effizientere Methode zur Verbindung von Ruby mit Mysql, den Treiber mysql, technisch erläutern2, diese Methode zur Verbindung mit MySql wird derzeit ebenfalls empfohlen.

mysql installieren2 Treiber:

gem install mysql2

Sie müssen –with verwenden-mysql-config die Pfadzuordnung von mysql_config konfigurieren, z.B.: –with-mysql-config=/some/random/path/bin/mysql_config.

Verbindung

Verbindung zur Datenbank Syntax wie folgt:

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

更多参数可以查看 http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html.

查询

results = client.query("SELECT * FROM users WHERE group='githubbers'")

特殊字符转义

escaped = client.escape("gi'thu\"bbe\0r's")
results = client.query("SELECT * FROM users WHERE group='#{escaped}'")

计算结果集返回的数量:

results.count

迭代结果集:

results.each |row|
  # row 是哈希
  # 键值是数据库字段
  # 值都是对应 MySQL中数据
  puts row["id"] # row["id"].class == Fixnum
  if row["dne"] # 不存在则是 nil
    puts row["dne"]
  end
end

在线示例

#!/usr/bin/ruby -w
require 'mysql'2
 
client = Mysql2::Client.new(
    :host     => ''127.0.0.1', # 主机
    :username => 'root',     # 用户名
    :password => ''123456',    # 密码
    :database => 'test',     # 数据库
    :encoding => 'utf8'       # 编码
    )
results = client.query("SELECT VERSION()")
results.each |row|
  puts row
end

以上示例运行输出结果为:

{"VERSION()"=>"5.6.21"}

连接选项

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 = 'utf'8',
  :read_timeout = seconds,
  :write_timeout = seconds,
  :connect_timeout = seconds,
  :reconnect = true/false,
  :local_infile = true/false,
  :secure_auth = true/false,
  :default_file = ''/path/to/my.cfg',
  :default_group = 'my.cfg section',
  :init_command => sql
  )

Mehr Inhalte finden Sie unter:http://www.rubydoc.info/gems/mysql2/0.2.3/frames.