gpt4 book ai didi

sql - 如何创建 Emacs SQL 缓冲区?

转载 作者:行者123 更新时间:2023-12-01 11:10:59 25 4
gpt4 key购买 nike

我可以通过以下方式手动连接:

M-x sql-postgres

然后键入用户、数据库、主机、服务器

我想做这样的事情:

(connect-foo (user "me")(database "bar")(host "earth"))

目前的解决方案:

我从 sql.el 中抓取了一些代码并对其进行了更改,以便我可以非交互式地使用它。

(defun sql-create-buffer (profile)
"derived from sql-product-interactive in sql.el which is"
"covered by GNU General Public License version 3."

(setq sql-user (cdr (assoc 'user profile))
sql-password (cdr (assoc 'password profile))
sql-server (cdr (assoc 'server profile))
sql-database (cdr (assoc 'database profile)))
(setq product 'postgres) ;;(cdr (assoc 'product profile)))
(when (sql-product-feature :sqli-connect product)
(if (comint-check-proc "*SQL*")
(pop-to-buffer "*SQL*")
;; Connect to database.
(message "Login...")
(funcall (sql-product-feature :sqli-connect product))
;; Set SQLi mode.
(setq sql-interactive-product product)
(setq sql-buffer (current-buffer))
(sql-interactive-mode)
;; All done.
(message "Login...done")
(pop-to-buffer sql-buffer))))

(setq bar-profile '(
(product . "postgres")
(user . "me")
(password . "")
(server . "earth")
(database . "bar")))

我不知道如何处理“产品”参数,所以我暂时将其硬编码。它是“sql.el 中的 postgres”。

(sql-create-buffer bar-profile)

最佳答案

似乎包不打算以非交互方式使用(可能是为了阻止将登录信息写入 init 文件,这是一个非常合理的原则)。

但是,如果你真的想避免回答问题,你可以简单地重新定义查询函数,像这样:

(defun sql-get-login (&rest what)
(setq sql-user "me"
sql-password "secret"
sql-server "localhost"
sql-database "MyDB"))

关于sql - 如何创建 Emacs SQL 缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2513686/

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