簡體   English   中英

如何創建Emacs SQL緩沖區?

[英]How do I create an Emacs SQL buffer?

我可以手動連接:

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")))

我不知道如何處理'product'參數,所以我現在把它硬編碼了。 這是'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"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM