如何在Emacs Lisp中执行SQL查询?

3

我想在elisp中执行一个SQL查询并获得它的结果:

(let ((results (do-sql-query "SELECT * FROM a_table")))
     (do-something-with results))

我正在使用Postgres,已经知道所有的连接信息(主机、用户名、密码、数据库等),我只想同步执行查询并获取结果。

3个回答

3

我没有尝试过,但是pg.el看起来很有前途。


这太棒了,我用这个重新编写了我的现有命令。虽然速度有点慢,但使用起来更加容易。 - Chris R
链接已失效。我编辑了答案,使用https://github.com/cbbrowne/pg.el。 - user272735

0

我最终使用以下形式调用psql:

(shell-command-to-string
   (concat sql-postgres-program
                 " -h DBHOST -t"
                 " -c \"SELECT db FROM defines.databases WHERE role = '" tier "' AND db ~ '^" string "';\""
                 " -U USERNAME DBNAME"))

看起来一切都很顺利。我需要使用Paul链接的函数将其截断(chomp),然后拆分结果,但我可以从中得到我需要的内容。


0

sql.el已经内置在emacs中,并且有两种模式;你应该能够使用它来从elisp发送mysql命令,但似乎不太清楚如何操作。

我不确定这是否完全可以在elisp中无需用户交互或处于sql-mode下运行。它确实有将字符串发送到执行的函数。

这个链接看起来很有趣;它依赖于mysql模式,并使模式更像你想要的工作方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接