Как я могу выполнить SQL-запрос в emacs lisp? - PullRequest
2 голосов
/ 18 июня 2010

Я хочу выполнить SQL-запрос и получить его результат в elisp:

(let ((results (do-sql-query "SELECT * FROM a_table")))
     (do-something-with results))

Я использую Postgres, и я уже знаю всю информацию о моем соединении (хост, имя пользователя, пароль, db etal) Я просто хочу выполнить запрос и получить результат синхронно.

Ответы [ 4 ]

3 голосов
/ 18 июня 2010

Я не пробовал, но pg.el выглядит многообещающе.

1 голос
/ 18 июня 2010

Я недавно столкнулся с этим по отношению к SQLite. Пока не использовал его, но похоже, что он подходит.

0 голосов
/ 18 июня 2010

sql.el встроен в emacs и имеет два режима; Вы должны быть в состоянии работать с этим, чтобы отправлять команды mysql из elisp, но, похоже, это не делает очевидным то, как вы это делаете.

Я не уверен, что это работает полностью из elisp без взаимодействия с пользователем или в режиме sql. У него есть функции для отправки строки для выполнения.

Эта ссылка выглядит интересно; он отключает режим mysql и делает режим более похожим на то, как вы хотите, чтобы он работал.

0 голосов
/ 18 июня 2010

В итоге я позвонил в psql, используя эту форму:

(shell-command-to-string
   (concat sql-postgres-program
                 " -h DBHOST -t"
                 " -c \"SELECT db FROM defines.databases WHERE role = '" tier "' AND db ~ '^" string "';\""
                 " -U USERNAME DBNAME"))

Кажется, все сработало. Я должен сжать его (используя функцию, с которой связан Пол) и разделить результаты, но я получаю из этого то, что мне нужно.

...