From e810b3b4b9259b708dd37ac04339e2f71e76478a Mon Sep 17 00:00:00 2001 From: Stefano Rodighiero Date: Sun, 24 Mar 2019 11:35:21 +0100 Subject: [PATCH] ob-sql.el: Option to reference connections in `sql-connection-alist' * lisp/ob-sql.el (org-babel-find-db-connection-param): new function. Provide a new param called :dbconnection, that can be used to reference connections defined in `sql-connection-alist', a custom variable defined in sql.el. TINYCHANGE --- lisp/ob-sql.el | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el index 2a58188..1007e74 100644 --- a/lisp/ob-sql.el +++ b/lisp/ob-sql.el @@ -39,6 +39,7 @@ ;; - dbport ;; - dbuser ;; - dbpassword +;; - dbconnection (to reference connections in sql-connection-alist) ;; - database ;; - colnames (default, nil, means "yes") ;; - result-params @@ -174,16 +175,35 @@ Otherwise, use Emacs' standard conversion function." ((string= "windows-nt" system-type) file) (t (format "%S" (convert-standard-filename file))))) +(defun org-babel-find-db-connection-param (params name) + "Return database connection parameter NAME. +Given a parameter NAME, if :dbconnection is defined in PARAMS +then look for the parameter into the corresponding connection +defined in `sql-connection-alist`, otherwise look into PARAMS. +Look `sql-connection-alist` (part of SQL mode) for how to define +database connections." + (if (assq :dbconnection params) + (let* ((dbconnection (cdr (assq :dbconnection params))) + (name-mapping '((:dbhost . sql-server) + (:dbport . sql-port) + (:dbuser . sql-user) + (:dbpassword . sql-password) + (:database . sql-database))) + (mapped-name (cdr (assq name name-mapping)))) + (cadr (assq mapped-name + (cdr (assoc dbconnection sql-connection-alist))))) + (cdr (assq name params)))) + (defun org-babel-execute:sql (body params) "Execute a block of Sql code with Babel. This function is called by `org-babel-execute-src-block'." (let* ((result-params (cdr (assq :result-params params))) (cmdline (cdr (assq :cmdline params))) - (dbhost (cdr (assq :dbhost params))) - (dbport (cdr (assq :dbport params))) - (dbuser (cdr (assq :dbuser params))) - (dbpassword (cdr (assq :dbpassword params))) - (database (cdr (assq :database params))) + (dbhost (org-babel-find-db-connection-param params :dbhost)) + (dbport (org-babel-find-db-connection-param params :dbport)) + (dbuser (org-babel-find-db-connection-param params :dbuser)) + (dbpassword (org-babel-find-db-connection-param params :dbpassword)) + (database (org-babel-find-db-connection-param params :database)) (engine (cdr (assq :engine params))) (colnames-p (not (equal "no" (cdr (assq :colnames params))))) (in-file (org-babel-temp-file "sql-in-")) -- 2.7.4