Wie sprichst du SQL direkt mit MySQL von Ruby?

7

Ich möchte ein Skript in Ruby schreiben, um einige verpfuschte Schlüssel in mehreren Kopien desselben MySQL-Schemas zu bereinigen. Ich möchte etwas wie SHOW CREATE TABLE machen, dann schauen, was zurückkommt und Schlüssel löschen, wenn sie existieren.

Ich weiß, in der Rails-Umgebung können Sie das tun ...

%Vor%

Aber was du zurückbekommst, ist ein "Ergebnis" -Objekt. Für diese Aufgabe brauche ich einen String, damit ich ihn analysieren und entsprechend handeln kann.

    
Ethan 26.12.2008, 21:49
quelle

6 Antworten

4

Sie können das mysql-ruby Juwel überprüfen.

Hier ist eine Zusammenfassung, wie man es benutzt: Verwenden des Ruby MySQL-Moduls

Mehr kann über Google

gefunden werden     
daddz 26.12.2008, 23:57
quelle
10

Dies sollte Ihnen helfen:

%Vor%

Sehen Sie sich #all_hashes in der MySql :: Result-Instanz an

    
user52804 08.01.2009 07:50
quelle
8

Ich würde das mysql-ruby-Juwel verwenden und Sie würden so etwas tun:

%Vor%     
Tim Knight 27.12.2008 00:38
quelle
4

Wenn Sie ActiveRecord nicht verwenden möchten, könnte ein ORM für Ihre Verwendung etwas kompliziert sein.) Sie können immer noch die ruby-mysql-Bibliothek benutzen oder noch besser IMHO ist die Ruby DBI / DBD-Bibliothek (< a href="http://rubyforge.org/projects/ruby-dbi/"> hier ) mit DBD-Treibern für mysql & amp; postgresql out-of-the-box.

Auf diese Weise können Sie gerade SQL-Anweisungen wie folgt ausgeben

%Vor%

dbi / dbrc ist ein nützliches Modul, mit dem Sie es vermeiden können, Login und Passwort direkt in das Skript einzugeben. Siehe dort .

    
Keltia 26.12.2008 22:26
quelle
1

Es gibt wahrscheinlich einen besseren Weg, dies programmatisch zu tun. Wenn Sie jedoch wirklich die interaktiven Befehle steuern und die Ergebnisse parsen wollen, expect kann besser geeignet sein. Du könntest immer noch von deinem Ruby-Skript ausgehen.

    
frankodwyer 26.12.2008 21:55
quelle
0

Benutze Mysql2

Um diesen Thread zu aktualisieren: Ich würde Mysql2 jetzt vorschlagen: Ссылка

    
Nathan Long 28.03.2013 15:55
quelle