Comment faire pour obtenir le résultat sous forme de tableau de Hachages en Ruby (mysql2 gem)
Je suis en utilisant Ruby mysql2 gem trouvé ici:
https://github.com/brianmario/mysql2
J'ai le code suivant:
client = Mysql2::Client.new(
:host => dbhost,
:port => dbport, :database => dbname,
:username => dbuser,
:password => dbpass)
sql = "SELECT column1, column2, column3 FROM table WHERE id=#{id}"
res = client.query(sql, :as => :array)
p res # prints #<Mysql2::Result:0x007fa8e514b7d0>
Est-il possible au-dessus de la .query
appel pour le retour de tableau de hachages, chaque l'hesh dans le res
tableau pour être dans le format column => value
. Je peux le faire manuellement, mais de les docs que j'ai été laissé avec l'impression que je peux obtenir les résultats directement chargés dans la mémoire, dans ce format. J'ai besoin de cela, parce que, après que j'ai coder le résultat json de toute façon, il n'y a aucun avantage pour moi d'extraire les lignes une par une. Également la quantité de données est toujours très faible.
Pour info: Si vous arrive d'être à l'aide de rails, vous pouvez utiliser
Rails.configuration.database_configuration[Rails.env]
en place des paramètres de hachage pour new
.OriginalL'auteur ddinchev | 2012-10-22
Vous devez vous connecter pour publier un commentaire.
Changement
:
@Tadman dit,
:as => :hash
est la valeur par défaut, donc en fait vous n'avez pas à spécifier quoi que ce soit.:array
dans0.3.13
OriginalL'auteur steenslag
Vous pouvez toujours récupérer les résultats sous forme de JSON directement:
Le format par défaut, autant que je sache, est un tableau de hachages. Si vous voulez touches de symbole, vous devez demander à ceux-ci. Beaucoup de cela est documenté dans la pierre elle-même.
Vous devez également être extrêmement prudent sur l'insertion des choses dans votre requête avec substitution de chaîne. Chaque fois que possible, utiliser des espaces réservés. Ce ne sont pas pris en charge par la
mysql2
pilote directement, de sorte que vous devez utiliser un adaptateur couche comme ActiveRecord ou Suite.client.query(sql, :as => :json)
etclient.query(sql, :as => :array)
retour Mysql2::objet de Résultat, pas de tableau de hachages ou json. Aussi, je suis parti avec l'impression que:as => :json
n'est pas mis en œuvre.Il est. Il vous suffit de demander le résultat de ce que vous voulez. Essayez
result.to_s
ouresult.to_a
.(:as => :json).to_s
renvoie toujoursMysql2::Result object
,:as => :hash
résolu. Merci pour les idéesOriginalL'auteur tadman
La le code source pour mysql2 mis en œuvre MySql2::Résultat de tout simplement
include Enumerable
, de sorte que le moyen le plus évident d'accéder aux données est par l'utilisation d'une méthode mise en œuvre dansEnumerable
doc ici.Par exemple, chaque#, #each_with_index, n ° de recueillir et d' #to_a sont tous les moyens utiles pour accéder à la
Result
'éléments.OriginalL'auteur Isaac Betesh