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