tuto – ruby – mysql

Ruby fait tout et facilement (je trouve), donc voici un exemple assez compact de code ruby illustrant l’utilisation de mysql.

Ce billet comporte du code incluant la gestion d’erreur, obligatoire dans certains cas (requêtage http, sql, etc ..).

 

Vous trouverez une structure du type :

begin
    something to do / faire quelque chose
 rescue
    something to do in case of failure in the begin block / faire quelque chose en cas de plantage dans le bloc begin
 ensure
    something to do in every case after the ending of the begin or the rescue block / s'assurer de faire qlq ch après le bloc begin ou  le bloc rescue
 end

 

Vous pouvez toujours vous référer à la doc suivante pour plus de détails et d’options sur le formalisme begin/rescue/ensure =>

http://ruby.bastardsbook.com/chapters/exception-handling/

 

 

librairie à inclure :

require 'mysql'

 

le bloc begin, qui contient le code de connexion à la bdd, les différentes query à effectuer (select, insert, update, delete) :

      begin
         # connect to the MySQL server
         dbh = Mysql.real_connect("localhost", "user", "pass", "bdd_name")

 

un select, limitant les résultats à 100, récupérant les champs field1 et field2 des enregistrements de la table « table », où le champ field3 = 1 :

         res = dbh.query("SELECT field1, field2 FROM table WHERE field3 = '1' LIMIT 100") # max 100

 

on fetch les résultants en affichant les colonnes contenant les champs field1 et field2 :

         while row = res.fetch_row do
             printf "%s, %s\n", row[0], row[1]

 

pour chacune des lignes, on update le champ field4 à 1 :

             update = dbh.prepare "UPDATE table SET field4 = ? WHERE field1 = ? AND field2 = ?"
             update.execute 1, row[0], row[1] 
         end

 

le bloc rescue, qui s’exécute s’il y a plantage dans le bloc begin :

      rescue Mysql::Error => e
         puts "Error code: #{e.errno}"
         puts "Error message: #{e.error}"
         puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")

 

le bloc ensure, où nous nous assurons de déconnecter du serveur sql :

      ensure
         # disconnect from server
         dbh.close if dbh
      end

 

et voilà les basic !