2016-11-17 5 views
-2

Ich habe gerade die "Sequel" gem installiert. Ich weiß, dass es viele Methoden gibt, die SQL einfacher machen, aber ich denke, das ist einfach verwirrend.So senden Sie rohe Abfragezeichenfolge mit Sequel

Gibt es eine Möglichkeit, eine rohe SQL-Abfrage zu senden, so dass:

table.all 

sein würde?

"SELECT * FROM table" 
+1

Es mag verwirrend erscheinen, aber jede neue Technologie oder Sprache wird beim Start verwirrend erscheinen. Es ist auch wichtig, das dahinter stehende Konzept zu recherchieren, die Dokumentation zu lesen und festzustellen, ob das Tool für Sie wertvoll ist und ob Sie bereit sind, sich die Mühe zu machen, es zu lernen. Gut geschriebene ORMs, wie Sequel, haben viele Vorteile gegenüber dem Schreiben von Roh-SQL und wenigen Nachteilen. Sie verlieren die Vorteile, wenn Sie darauf bestehen, das SQL selbst zu schreiben, weil Sie diese Abfragen neu schreiben müssen, wenn/wenn Sie zu einem anderen DBM wechseln. Lerne das ORM und das wird nicht passieren. –

+1

Ihre Frage wird in Sequels Dokumentation behandelt. Die README und Cheatsheet sind ausgezeichnete Startpunkte, um zu lernen, wie es funktioniert. Sich auf eine solche Frage einzulassen und diese Frage zu stellen, zeigt wenig Aufwand. "[Wie viel Forschungsaufwand wird von Stack Overflow-Benutzern erwartet?] (Http://meta.stackoverflow.com/questions/261592)" ist relevant. –

Antwort

0

You Can Just Use SQL“ beschreibt, wie SQL in Sequel Ausdrücke einzubetten, aber du bist nicht die Vorteile der Kraft eines ORM gehen zu nehmen, wenn Sie das tun. Stattdessen würde ich empfehlen, die Beispiele in der "Cheat Sheet" zu lesen und zu spielen.

Hier ist ein gezwickt Beispiel aus den README:

require 'sequel' 

DB = Sequel.sqlite 

DB.create_table :items do 
    primary_key :id 
    String :name 
    Float :price 
end 

items = DB[:items] 
items.insert(:name => 'abc', :price => rand * 100) 
items.insert(:name => 'def', :price => rand * 100) 
items.insert(:name => 'ghi', :price => rand * 100) 

An dieser Stelle eine im Speicher würde SQLite DB existiert und Zeilen enthalten würde.

Die Basis Abfrage von items ist ein select:

items.sql # => "SELECT * FROM `items`" 

Wenn wir die Variable untersuchen, erhalten wir:

items # => #<Sequel::SQLite::Dataset: "SELECT * FROM `items`"> 

erneut die Abfrage zeigt.

Die all Methode führt die Abfrage und gibt das Ergebnis:

items.all # => [{:id=>1, :name=>"abc", :price=>41.416988254871455}, {:id=>2, :name=>"def", :price=>40.44638070518766}, {:id=>3, :name=>"ghi", :price=>65.1898528586475}] 

Die Verwendung derselben getan werden könnte:

DB["select * from items"] # => #<Sequel::SQLite::Dataset: "select * from items"> 

und wieder all werden die Informationen aus dem DB abrufen und Rückkehr es:

DB["select * from items"].all # => [{:id=>1, :name=>"abc", :price=>33.294219608356926}, {:id=>2, :name=>"def", :price=>29.25412438270755}, {:id=>3, :name=>"ghi", :price=>6.19681273957694}] 

Das beginnt nicht, die Macht von zu zeigen ein ORM wie Sequel though. Arbeite durch die README und spiele dann mit den Beispielen im Spickzettel und es wird mehr Sinn ergeben.

Verwandte Themen