я могу подключиться вручную, выполнив:Как создать буфер Emacs SQL?
Mx SQL-Postgres
и введите пользователя, базы данных, хост, сервер
Я хотел бы сделать что-то вроде:
(подключение -foo (пользователь "меня") (база данных "бар") (принимающая "земля"))
Решение до сих пор:
Я схватил некоторые гр ode из 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', поэтому я оставил его жестко закодированным. Это «postgres» в sql.el.
(sql-create-buffer bar-profile)
Спасибо. Я схватил часть кода и пытаюсь использовать его не интерактивно. –
Спасибо. У меня подобная проблема с Sybase. Я попробую ваше решение. У меня есть мой пароль irc в моем .emacs, который, как и наши серверы db, в любом случае находится за брандмауэром. –