OVH Cloud OVH Cloud

Emacs comme client MySql.

15 réponses
Avatar
valrik
Bonjour =C3=A0 tous,
j'ai vu qu'il =C3=A9tait possible d'utiliser Emacs comme client d'une base =
de
donn=C3=A9es relationnelles avec le langage SQL.

J'ai une base MySql et j'aurais voulu avoir votre avis sur les
fonctionnalit=C3=A9s propos=C3=A9es. Si les projets sont matures par exempl=
e.

De comparer avec emma ou phpMyAdmin aussi. Depuis longtemps, je
travaille avec emma qui n'est pas si mal, mais comme j'utilise beaucoup
Emacs, je souhaiterais unifier mes outils.

Merci et bonne soir=C3=A9e.

5 réponses

1 2
Avatar
valrik
Eric Marsden writes:

Cette bibliothèque ne fonctionne pas comme pg.el : elle lance le
client mysql localement et communique avec lui via un pipe (alors que
pg.el «parle» le protocole réseau de PostgreSQL).



Je me disais aussi, je ne voyais aucun "host" dans le code... Donc
connexion ssh pour travailler à distance ?
Et puis une fois connecté, je fais quoi ? Je patauge un peu, je dois
dire et je n'ai pas trop le temps de m'en occuper. Une googlelisation
n'a rien donné également. :-(
Avatar
Pascal J. Bourguignon
valrik writes:

Eric Marsden writes:

Cette bibliothèque ne fonctionne pas comme pg.el : elle lance le
client mysql localement et communique avec lui via un pipe (alors que
pg.el «parle» le protocole réseau de PostgreSQL).



Je me disais aussi, je ne voyais aucun "host" dans le code... Donc
connexion ssh pour travailler à distance ?
Et puis une fois connecté, je fais quoi ? Je patauge un peu, je dois
dire et je n'ai pas trop le temps de m'en occuper. Une googlelisation
n'a rien donné également. :-(



Je voulais dire, "ça a l'air de s'utiliser comme pg.el". ;-)

(require 'cl)
(require 'mysql)
(defvar *db*)

(setf *db* (mysql-connect "user" "password" "database"))

(dolist (row (mysql-query "select * from toys" *db*))
(insert "n")
(dolist (item row)
(insert (format "%10s |" item))))

(mysql-disconnect *db*)




--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Avatar
Daimrod
valrik writes:

Eric Marsden writes:

Cette bibliothèque ne fonctionne pas comme pg.el : elle lance le
client mysql localement et communique avec lui via un pipe (alors que
pg.el «parle» le protocole réseau de PostgreSQL).



Je me disais aussi, je ne voyais aucun "host" dans le code... Donc
connexion ssh pour travailler à distance ?
Et puis une fois connecté, je fais quoi ? Je patauge un peu, je dois
dire et je n'ai pas trop le temps de m'en occuper. Une googlelisation
n'a rien donné également. :-(



Pour utiliser l'option --hostname de mysql quelque chose comme ça
devrait fonctionner (non testé):

(defvar mysql-host "host")

(defun mysql-connect (&optional user pwd db host)
(let ((args (remove-if 'null
(append mysql-options
(list "-u" (or user mysql-user) db)
(and (string< "" (or pwd mysql-password))
(list (concat "-p" (or pwd mysql-pass word))))
(list "--hostname" (or host mysql-host)))))
proc)
(setq proc
(apply 'start-process
(append (list mysql-proc-name nil mysql-program) args)))
(set-process-plist proc '(output "" finished t))
(set-process-filter proc 'mysql-filter)
proc))
Avatar
valrik
valrik writes:

Eric Marsden writes:

Cette bibliothèque ne fonctionne pas comme pg.el : elle lance le
client mysql localement et communique avec lui via un pipe (alors que
pg.el «parle» le protocole réseau de PostgreSQL).



Je me disais aussi, je ne voyais aucun "host" dans le code... Donc
connexion ssh pour travailler à distance ?
Et puis une fois connecté, je fais quoi ? Je patauge un peu, je dois
dire et je n'ai pas trop le temps de m'en occuper. Une googlelisation
n'a rien donné également. :-(



Une fois connecté avec SSH sur mon serveur, dans mon *scratch*, j'ex écute
la fonction suivante :
(mysql-connect "anonymous") C-x C-e
Cela me donne dans le mini-buffer le message :
#<process mysql>
Et si je veux quitter Emacs, j'ai le buffer *Process List* qui m'affiche
:
Proc Status Buffer Tty Command
---- ------ ------ --- -------
mysql<1> run (none) /dev/pts/7 mysql -s -u anonymous
mysql run (none) /dev/pts/4 mysql -s -u anonymous

note : J'ai fait deux essais de connexions.

Visiblement, je suis connecté, mais rien de plus. Il faut que je me
serve des autres fonctions, c'est ça ? Cette idée me vient en à ©crivant
(je réfléchis tout haut en quelques sortes ;-) )
Avatar
valrik
Daimrod writes:

valrik writes:

Eric Marsden writes:

Cette bibliothèque ne fonctionne pas comme pg.el : elle lance le
client mysql localement et communique avec lui via un pipe (alors que
pg.el «parle» le protocole réseau de PostgreSQL).



Je me disais aussi, je ne voyais aucun "host" dans le code... Donc
connexion ssh pour travailler à distance ?
Et puis une fois connecté, je fais quoi ? Je patauge un peu, je dois
dire et je n'ai pas trop le temps de m'en occuper. Une googlelisation
n'a rien donné également. :-(



Pour utiliser l'option --hostname de mysql quelque chose comme ça
devrait fonctionner (non testé):

(defvar mysql-host "host")

(defun mysql-connect (&optional user pwd db host)
(let ((args (remove-if 'null
(append mysql-options
(list "-u" (or user mysql-user) db)
(and (string< "" (or pwd mysql-password))
(list (concat "-p" (or pwd mysql-pa ssword))))
(list "--hostname" (or host mysql-host)) )))
proc)
(setq proc
(apply 'start-process
(append (list mysql-proc-name nil mysql-program) args)))
(set-process-plist proc '(output "" finished t))
(set-process-filter proc 'mysql-filter)
proc))



Ok, merci, je te promets de tester cela et de fournir un retour dès que
je saurai me servir de mysql.el en local.
1 2