gpt4 book ai didi

clojure - 如何获取 clojure yesql 输出它将执行的 SQL?

转载 作者:行者123 更新时间:2023-12-02 12:44:32 27 4
gpt4 key购买 nike

我想调试我的 yesql 查询。所以我试图获取它会执行的 SQL。谁能给我一个例子来说明如何让 yesql 输出它将执行的 SQL?

这不是一个很好的例子...我将参数名称“tel”误认为是“phone”。

用户.sql

-- name: insert-user
-- insert a user data to users table.
insert into
users ( name, age, tel, address, remark)
values (:name, :age, :tel, :address, :remark);

查询.clj

(ns example.sql.query
(:require [yesql.core :as yesql]
[example.sql.datasource :as ds]))

(yesql/defqueries {:connection {:datasource ds/datasource}})
(yesql/insert-user {:name "joe" :age 22 :phone nil :address "xxxxxx" :remark ""})

最佳答案

一般来说(正如评论中提到的),yesql 不应该做大量的 SQL 生成;这个概念是它传递您编写的查询。

话虽如此,如果您仍然想尝试查看 yesql 传递给 JDBC 的原始查询,这里有一个非常接近的技巧:

(require 'yesql.generate)
(require 'yesql.statement-parser)

(defn debug-yesql-query [queryfn args]
;; queryfn should be a query function generated by yesql
;; args should be a map of query args, just as if you were
;; calling the query function
(let [sql-source (-> queryfn meta :yesql.generate/source)]
(yesql.generate/rewrite-query-for-jdbc
(yesql.statement-parser/tokenize sql-source)
args))

使用 yesql 版本 0.5.2 进行测试。

关于clojure - 如何获取 clojure yesql 输出它将执行的 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com