我可以手动连接:
Mx sql-postgres
并键入用户,数据库,主机,服务器
我想做点什么:
(connect-foo(用户"我")(数据库"bar")(主机"地球"))
目前解决方案:
我从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")))
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理'product'参数,所以我现在把它硬编码了.这是'sql.el中的postgres.
(sql-create-buffer bar-profile)
Run Code Online (Sandbox Code Playgroud)
似乎打包不是非交互式使用(可能是为了阻止将登录信息写入init文件,这是一个完美的原则).
但是,如果您真的想避免回答问题,可以简单地重新定义查询功能,如下所示:
(defun sql-get-login (&rest what)
(setq sql-user "me"
sql-password "secret"
sql-server "localhost"
sql-database "MyDB"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |