有没有办法看到续集表达式将生成的原始SQL?

Mat*_*ski 15 ruby sequel

说我有一个续集表达式,如:

db.select(:id).from(:some_table).where(:foo => 5)
Run Code Online (Sandbox Code Playgroud)

有没有办法获得这将生成的SQL字符串(即"SELECT id FROM some_table WHERE foo = 5")?我注意到调用inspectto_s上面的表达式的结果包括生成的SQL,但不知道如何直接访问它.

那些不返回数据集的Sequel表达式如何:

db.from(:some_table).update(:foo => 5)
Run Code Online (Sandbox Code Playgroud)

是否可以在执行之前从中查看SQL?

mec*_*ish 27

您可以调用sql数据集:

db.select(:id).from(:some_table).where(:foo => 5).sql # => "SELECT `id` FROM `some_table` WHERE (`foo` = 5)"
Run Code Online (Sandbox Code Playgroud)

对于更新查询,您可以这样做:

db.from(:some_table).update_sql(:foo => 5) # => "UPDATE `some_table` SET `foo` = 5"
Run Code Online (Sandbox Code Playgroud)

一些类似的有用方法:

insert_sql
delete_sql
truncate_sql
Run Code Online (Sandbox Code Playgroud)