2010-08-26 10 views
4

Existe-t-il un wrapper SQLite pour elisp?SQLite et elisp?

Si ce n'est pas le cas, est-ce une bonne idée d'appeler du code python qui prend le contrôle de SQLite via un processus de démarrage ou autre? Est-il meilleur moyen d'utiliser SQLite d'Elisp?

Répondre

6

à partir du lien de départ de Trey Jackson, il semble y avoir un tutoriel sur la façon de construire a programmatic interface for elisp to an inferior-process sqlite, par exemple sqlite-query<f>. Il est basé sur une capture d'écran comint buffer juste à cet effet (par exemple, ne pas réutiliser sql.el). Ce qui suit est un exemple incomplet copié à partir de cette référence.

;; this is emacs lisp code 
(defun sqlite-query (sql-command) 
(set-buffer sqlite-output-buffer)   ;1 
(erase-buffer)         ;2 
    (comint-redirect-send-command-to-process 
    sql-command 
    sqlite-output-buffer 
    (get-buffer-process sqlite-process-buffer) nil) ;3 
    (accept-process-output 
    (get-buffer-process sqlite-process-buffer) 
    1) ;need to wait to obtain results 

    (let* ((begin (goto-char (point-min)))  ;4 
     (end (goto-char (point-max))) 
     (num-lines (count-lines begin end)) 
     (counter 0) 
     (results-rows())) 
    (goto-char (point-min)) 
    (while (< counter num-lines) 
     (setq results-rows (cons (chomp (thing-at-point 'line)) results-rows)) 
     (forward-line) 
     (setq counter (+ 1 counter))) 
    (car `(,results-rows)))) 

Malheureusement, il ne ressemble pas il y a quelque chose là impromptu, mais peut-être it is a good approach et probablement mieux que d'essayer d'utiliser une autre langue intermédiaire.

(En plus, je trouve cet exemple de connexion SQLite avec l'interface GUI Widget de emacs intrigante.)

+2

J'ai écrit un [petit emballage SQLite pour Emacs Lisp] (http://www.jasonfruit.com/ page/emacs_sqlite_and_widgets) en réponse au code ici. – JasonFruit

6

Emacs wiki est votre ami, il se trouve quelques liens vers un couple d'outils pour sqlite.

Emacs WIki SQLite, le premier lien est probablement celui que vous cherchez: gérer l'interaction avec la base de données: sql-mode.