【问题标题】:Is there a way to see the raw SQL that a Sequel expression will generate?有没有办法查看 Sequel 表达式将生成的原始 SQL?
【发布时间】:2013-12-16 19:12:08
【问题描述】:

假设我有一个 Sequel 表达式,例如:

db.select(:id).from(:some_table).where(:foo => 5)

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

不返回数据集的 Sequel 表达式又如何,例如:

db.from(:some_table).update(:foo => 5)

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

【问题讨论】:

    标签: ruby sequel


    【解决方案1】:

    您可以在数据集上调用sql

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

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

    db.from(:some_table).update_sql(:foo => 5) # => "UPDATE `some_table` SET `foo` = 5"
    

    一些类似有用的方法:

    insert_sql
    delete_sql
    truncate_sql
    

    【讨论】:

    • 在这种情况下db 是什么?如何访问/实例化它?
    • 有没有办法从 ActiveRecord 关系中得到这个?
    • 这是一个类似db = Sequel.connect('sqlite://blog.db') 的续集连接。在ActiveRecord::Relation,您可以直接拨打to_sql
    • 谢谢。 :-) 在需要执行多个 SQL 语句的特定 Rails 表达式的情况下,你知道.to_sql 是否只给出最新的吗?
    • 不确定你的意思。它将向您显示与您调用它的关系相关的语句(它将显示连接等,但不包括和预加载)。
    猜你喜欢
    • 1970-01-01
    • 2020-04-06
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2015-02-12
    • 2016-01-14
    相关资源
    最近更新 更多