Ruby mit MySQL verbinden - MySql2
Im vorherigen Kapitel haben wir die Verwendung von Ruby DBI vorgestellt. In diesem Kapitel stellen wir den effizienteren Treiber mysql2 zum Verbinden von Ruby mit MySQL vor. Diese Methode wird derzeit auch für die Verbindung zu MySQL empfohlen.
Installation des mysql2-Treibers:
Sie müssen den Pfad von mysql_config mit --with-mysql-config konfigurieren, zum Beispiel:–with-mysql-config=/some/random/path/bin/mysql_config。
Verbinden
Die Syntax zum Verbinden mit der Datenbank lautet wie folgt:
client = Mysql2::Client.new(:host => "localhost", :username => "root")
Weitere Parameter können Sie unterhttp://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html einsehen。
Abfrage
results = client.query("SELECT * FROM users WHERE group='githubbers'")
Sonderzeichen escapen
escaped = client.escape("gi'thu\"bbe\0r's")
results = client.query("SELECT * FROM users WHERE group='#{escaped}'")
Berechne die Anzahl der von der Ergebnismenge zurückgegebenen Zeilen:
results.count
Iteration über die Ergebnismenge:
results.each do |row|
puts row["id"]
if row["dne"]
puts row["dne"]
end
end
Beispiel
require 'mysql2'
client = Mysql2::Client.new(
:host => '127.0.0.1',
:username => 'root',
:password => '123456',
:database => 'test',
:encoding => 'utf8'
)
results = client.query("SELECT VERSION()")
results.each do |row|
puts row
end
Die Ausgabe des obigen Beispiels ist:
{"VERSION()"=>"5.6.21"}
Verbindungsoptionen
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 = Sekunden,
:write_timeout = Sekunden,
:connect_timeout = Sekunden,
:reconnect = true/false,
:local_infile = true/false,
:secure_auth = true/false,
:default_file = '/Pfad/zu/my.cfg',
:default_group = 'meine.cfg Sektion',
:init_command => sql
)
Für weitere Informationen siehe bitte:http://www.rubydoc.info/gems/mysql2/0.2.3/frames。 Weitere Erweiterungen