"Sequel"宝石をインストールしました。私は、SQLをもっと簡単にする方法がたくさんあることを知っていますが、それはちょっと混乱していると思います。Sequelを使用して生のクエリ文字列を送信する方法
ように、生のSQLクエリを送信する方法があります:
table.all
は次のようになりますか? documentationから
"SELECT * FROM table"
"Sequel"宝石をインストールしました。私は、SQLをもっと簡単にする方法がたくさんあることを知っていますが、それはちょっと混乱していると思います。Sequelを使用して生のクエリ文字列を送信する方法
ように、生のSQLクエリを送信する方法があります:
table.all
は次のようになりますか? documentationから
"SELECT * FROM table"
:
DB['SELECT * FROM table'].each do |row|
p row
end
「You Can Just Use SQLは」続編式にSQLを埋め込む方法について説明しますが、あなたはそれを行う場合はORMのパワーを利用するつもりはありません。代わりに、 "Cheat Sheet"の例を読み、試してみることをお勧めします。インメモリのSQLite DBが存在するであろうと行を含むことになり、この時点で
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)
:
ここREADMEから微調整例です。
items
のベースクエリは選択です:私たちは、変数を検査した場合
items.sql # => "SELECT * FROM `items`"
は、我々が得る:
items # => #<Sequel::SQLite::Dataset: "SELECT * FROM `items`">
が再びクエリを示します。
all
方法は、クエリを実行して結果を返します:
items.all # => [{:id=>1, :name=>"abc", :price=>41.416988254871455}, {:id=>2, :name=>"def", :price=>40.44638070518766}, {:id=>3, :name=>"ghi", :price=>65.1898528586475}]
同じが使用して行うことができます。
DB["select * from items"] # => #<Sequel::SQLite::Dataset: "select * from items">
と、再び、all
はDBとリターンから情報を取得しますそれ:
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}]
ORMのような続編。 READMEを使って作業し、チートシートの例を試してみると意味があります。
紛らわしいように見えるかもしれませんが、新しいテクノロジーや言語は、あなたが始めたときに混乱するようです。また、その背後にある概念を研究し、文書を読み、ツールが貴重なものであるかどうか、そしてそれを学ぶ努力を惜しまないかどうかを判断することも、本当に重要です。 Sequelのようによく書かれたORMには、未処理のSQLを書くことに比べて多くの利点があり、いくつかの欠点があります。異なるDBMに変更する場合には、これらのクエリを書き直す必要があるため、SQLの作成を主張するときには利点がありません。 ORMを学んでください。それは起こらないでしょう。 –
あなたの質問はSequelのドキュメントでカバーされています。 READMEとチートシートは、どのように動作するかを知る上での優れた出発点です。このような質問をすることで、少しでも努力することができます。 "[どのくらいの研究努力がStack Overflowユーザーに期待されていますか?](http://meta.stackoverflow.com/questions/261592)"が該当します。 –