问题标签 [hugsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
415 浏览

sql - 强制 hugsql 查询函数在返回错误数量的结果时抛出错误

使用 Clojure 和 hugsql。我这样定义我的查询。

using 之后,这将在我的命名空间中def-db-fns创建一个函数。query-should-return-one-but-returns-multiple

但是,如果我有不止一行some_table,此函数将简单地返回任意行,并且不会发出错误信号。

:one如果数据库返回多个结果,我如何强制定义的查询函数返回抛出异常?

0 投票
1 回答
1371 浏览

database - 使用 Clojure/Hugsql 处理 nil 参数

我正在使用 Hugsql 和 Clojure 来访问 Postgresql 数据库。我的几个数据库表有可选列——举个简单的例子,考虑一个带有各种地址列的“用户”表——地址 1、地址 2、城市等。

当我为“更新”编写 Hugsql 查询规范时,我不知道我传入的地图中会出现哪些值。所以如果我写一个查询:

但传入用户地图

然后抛出异常。我希望它能够创造出类似的东西

我查看了 Hugsql 源代码——它调用了一个 (validate-parameters) 函数,该函数抛出了我看不到的异常。我确定我遗漏了一些明显的东西:这似乎不是一个不寻常的要求,而且我肯定不想为可选列的每个可能组合编写不同的 SQL 查询规范。

有没有办法处理我丢失的参数?我是否通过使用可选列来滥用数据库?

0 投票
1 回答
1027 浏览

clojure - Clojure 中的 PGobject 类型转换

我在使用 Hugsql 的 Clojure 中遇到类型转换问题。我是 Clojure 的新手,也是 SQL 的新手,如果能得到任何帮助,我将不胜感激。

我们最近迁移了我们的 PostgreSQL 数据库,所以一列是一个 json 数组而不是一个字符串——迁移看起来像:

ALTER TABLE customers ALTER id TYPE JSON USING json_build_array(id);

但是现在当我查询该数据时,类型是 PGobject 而不是我希望的集合。当我在寻找:

  • ["id-123"]

实际返回值为

  • #object[org.postgresql.util.PGobject 0x7ff0434e "[\"id-123\"]"]

我花了一些时间查找如何进行类型转换,但没有运气。如何将此响应的类型转换为 Clojure 中的集合或序列?谢谢你的帮助!

0 投票
1 回答
158 浏览

printing - Clojure 从数据库中获取数据,转换并打印到控制台

我有以下任务。
我需要创建一个控制台应用程序,它需要一个参数,即要生成的数据数量。数据是人员地址和姓名。我创建了一个adress带有state, city, zip-code字段的表。我还创建了一个包含firstlast name列的表。我使用 HugSQL 来处理 PostgreSQL。所以我想动态混合地址、名字和姓氏并将结果打印到控制台中,生成的值的数量取决于传递给应用程序的参数。这是我的代码:

这里我只是检查usa-adress-getter函数的结果。但是函数评估的时间太大了,我的限制是 1 分钟内有 100 万个值。如何提高评价速度?函数从表中(get/usa)检索所有数据。adress

0 投票
2 回答
922 浏览

logging - 记录 HugSQL 执行的 sql 语句/查询

我想记录 HugSQL 执行的所有 SQL 字符串。我浏览了文档,但找不到任何东西。推荐的方法是什么?

0 投票
2 回答
5565 浏览

sql - 如何让postgres忽略带有重复键的插入但继续

我正在将内存集合中的记录数据插入到 postgres 中,并希望数据库忽略数据库中已经存在的任何记录(由于具有相同的主键),但继续进行其余的插入。

我正在使用 clojure 和 hugsql,顺便说一句,但我猜答案可能与语言无关。

由于我本质上是以这种方式将数据库视为一个集合,因此我可能正在参与一种反模式。

0 投票
1 回答
102 浏览

postgresql - 在 HugSQL 中使用自定义函数

我在 macOS 10.12.6 上使用 PostgreSQL 版本 10,并希望在 HugSQL 可以访问的查询中使用自定义 plpgsql 函数。以下 ansatz 可以正常工作:

这很有效,因为 HugSQL 允许我编写多行 SQL 语句,并且我可以包含helper().

但是,我想知道这样做是否真的有效,因为现在我每次do-something!运行查询时都重新定义函数。我试图将函数定义放在输入文件的顶部,但它只会导致编译器异常。

问题:最好的方法是什么?

0 投票
2 回答
109 浏览

clojure - 匹配所有键/值对

原始查询:

我想传入任意键/值对并获得匹配的结果。例如:

(select*-list db-spec {:name "Fruit" :type "Foo"})

应该导致:

我可以想到一些丑陋的方法来实现这一点,但很可能我忽略了一些很好的方法来做到这一点。

0 投票
5 回答
510 浏览

clojure - Hugsql 无法读取我的 sql 文件

我真的迷失在这里了。我有一个非常简单的应用程序。它所做的只是将用户插入到我的数据库中的用户表中。我使用 Postgres。代码是

在 db.clj 所在的目录中,我创建了一个名为 sql 的目录,其中有一个名为 q.sql 的文件。

当我运行 REPL 并输入 (require '[signupper.db :as db]) 时,我收到以下错误消息:

任何人有任何想法?

谢谢。

0 投票
0 回答
361 浏览

java - 避免使用 HugSQL 更改时区

我创建了一个空的 Clojure 应用程序,我在其中从数据库读取和写入日期字段。

列的类型MYSQL出现DATETIME在应用程序中,我使用JDBC驱动程序并clj-time使用日期进行操作。

我意识到,每当我在现场操作时,都会发生以下情况:


因此,它将应用程序保留为2018-04-11T04:58:38.137Z

在数据库中出现为2018-04-11 06:58:38



数据库中的值:2018-04-03 00:00:00

应用程序收到的值:2018-04-02 22:00:00


根据夏令时和时区最佳实践问题,您希望“每当您指的是一个确切的时间点,根据不受夏令时影响的统一标准坚持时间”,所以 UTC。

这会在我的生产服务器上发生这样的工作,因为它已将 UTC 配置为时区,但为了使体验更加一致,我希望在 DEV 中获得相同的行为。

此外,由于记录的正确性很重要,我发现有必要密封此行为并确保无论机器中配置的时区如何,记录都以 UTC 形式保存,因此无需应用任何转换即可检索(除非我需要它,我将手动转换为用户时区)。

整个想法似乎合理,但我没有找到太多信息。我想知道我是从错误的角度看待这个问题还是遗漏了更大的东西。

  • 谁负责转变?拥抱SQL?JDBC 驱动程序?

  • 如何修改代码以便插入 UTC 申请日期字段作为 UTC 存储在数据库中。

  • 如何修改代码以便在读取字段时不进行转换?

  • 如果必须将更改应用于更大的代码库,是否可以进行此配置以不影响其他查询?

编辑

@Mark Rotteveel 链接了这个问题。显然,setTimestamp 函数中有一个 calendar 参数可以让您指定时区。我可以在我的上下文中使用它吗?

是否可以合理地说它应该是一种在应用程序级别显式设置时区的方法,由 HugSQL 或 JDBC 保留?我在想,如果这通常依赖于 JVM 时区,如果服务器的时区错误地更改,会不会有很多应用程序中断?