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:

gem install mysql2

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| #row ist ein Hash #Die Schlüssel sind Datenbankfelder #Die Werte entsprechen den Daten in MySQL puts row["id"] # row["id"].class == Fixnum if row["dne"] #Wenn er nicht existiert, ist er nil puts row["dne"] end end

Beispiel

#!/usr/bin/ruby -w require 'mysql2' client = Mysql2::Client.new( :host => '127.0.0.1', #Host :username => 'root', #Benutzername :password => '123456', #Passwort :database => 'test', #Datenbank :encoding => 'utf8' #Kodierung ) 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