Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pg:connect et Emacs

8 réponses
Avatar
Stephane Tougard
Bonjour =C3=A0 tous,

J'ai install=C3=A9 le package pg.el. Par contre, lorsque j'essaye d'=C3=A9x=
ecuter
un script (emacs --script) avec les fonctions de ce module :

(let* conn (pg:connect "stephane" "stephane" "*****" "127.0.0.1" ))
(res (pg:exec conn "SELECT * from m")))
(message "status is %s" (pg:result res :status))
(message "metadata is %s" (pg:result res :attributes))
(message "data is %s" (pg:result res :tuples))
(pg:disconnect conn))


J'ai une superbe erreur

Symbol's function definition is void: pg:connect

J'ai essay=C3=A9 avec le (require 'pg)

Cannot open load file: no such file or directory, pg


Si quelqu'un peut soumettre un exemple de code qui marche ou bien
pointer sur le d=C3=A9tail qui m'=C3=A9chappe.

Merci

8 réponses

Avatar
vincent.belaiche
Mes commentaires insérés ci après :
Stephane Tougard writes:
Bonjour à tous,
J'ai installé le package pg.el. Par contre, lorsque j'essaye d'éxecuter
un script (emacs --script) avec les fonctions de ce module :
(let* conn (pg:connect "stephane" "stephane" "*****" "127.0.0.1" ))
(res (pg:exec conn "SELECT * from m")))
(message "status is %s" (pg:result res :status))
(message "metadata is %s" (pg:result res :attributes))
(message "data is %s" (pg:result res :tuples))
(pg:disconnect conn))

Cette expression me semble incorrecte (2 parenthèses ouvrantes manquent
après le let*), Il faudrait me semble-t-il :
(let* ((conn (pg:connect "stephane" "stephane" "*****" "127.0.0.1" ))
(res (pg:exec conn "SELECT * from m")))
(message "status is %s" (pg:result res :status))
(message "metadata is %s" (pg:result res :attributes))
(message "data is %s" (pg:result res :tuples))
(pg:disconnect conn))
J'ai une superbe erreur
Symbol's function definition is void: pg:connect
J'ai essayé avec le (require 'pg)
Cannot open load file: no such file or directory, pg
Si quelqu'un peut soumettre un exemple de code qui marche ou bien
pointer sur le détail qui m'échappe.
Merci

D'après l'erreur
Cannot open load file: no such file or directory, pg
on dirait que tu n'as pas mis le chemin de pg.el dans ton load-path.
évalue : (add-to-list 'load-path "/le/chemin/de/pg")
Sinon tu fais :
M-x toggle-debug-on-error
tu evalues ton code et tu regardes dans la trace débogueur où ça plante.
Vincent.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Stephane Tougard
(Vincent Belaïche) writes:
D'après l'erreur
Cannot open load file: no such file or directory, pg
on dirait que tu n'as pas mis le chemin de pg.el dans ton load-path.
évalue : (add-to-list 'load-path "/le/chemin/de/pg")

J'ai installé le package via la gestion des packages de
Emacs. D'habitude ça marche out of the box.
D'ailleurs, M-x help f ... me donne accès aux fonctions et lorsque je
clique sur le fichier pg.el, il est chargé dans un buffer. J'aurais
tendance à penser que tout est correct.
M-x toggle-debug-on-error
tu evalues ton code et tu regardes dans la trace débogueur où ça plante.

Ce qui m'indique rien de plus, mais je le fais peut-être pas correctem ent.
Avatar
vincent.belaiche
Stephane Tougard writes:
(Vincent Belaïche) writes:
D'après l'erreur
Cannot open load file: no such file or directory, pg
on dirait que tu n'as pas mis le chemin de pg.el dans ton load-path.
évalue : (add-to-list 'load-path "/le/chemin/de/pg")

J'ai installé le package via la gestion des packages de
Emacs. D'habitude ça marche out of the box.
D'ailleurs, M-x help f ... me donne accès aux fonctions et lorsque je
clique sur le fichier pg.el, il est chargé dans un buffer. J'aurais
tendance à penser que tout est correct.

Est-ce que si tu évalues
(load "pg.el")
ça trouve bien le fichier ?
Et sinon, qu'a donné la correction sur l'expression en let* que
j'indiquais dans mon message précédent ?
Vincent
[...]
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Stephane Tougard
(Vincent Belaïche) writes:
Est-ce que si tu évalues
(load "pg.el")

Cannot open load file: no such file or directory, pg.el
:~/.emacs.d$ find . -name pg.el
./elpa/pg-20130731.1442/pg.el
Forcément, ça aide pas. Mais pourquoi diable ça marche avec tous les
autres packages installés ?
Et sinon, qu'a donné la correction sur l'expression en let* que
j'indiquais dans mon message précédent ?

Ça ne change rien, mais à noter qu'aucune des fonctions du module ne marche.
Avatar
vincent.belaiche
Stephane Tougard writes:
(Vincent Belaïche) writes:
Est-ce que si tu évalues
(load "pg.el")

Cannot open load file: no such file or directory, pg.el
:~/.emacs.d$ find . -name pg.el
./elpa/pg-20130731.1442/pg.el
Forcément, ça aide pas. Mais pourquoi diable ça marche avec tous les
autres packages installés ?

Ch'ais pas, moi j'installe mes paquetages à l'ancienne, je n'ai jamais
encore utilisé la fonction package. Peut-être tu avais une ancienne
version dans un autre répertoire et il cherche toujours
l'ancienne... ménage mal fait ou un truc de ce genre...
Essaie toujours d'évaluer d'abord
(add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")
puis
(load "pg.el")
Et sinon, qu'a donné la correction sur l'expression en let* que
j'indiquais dans mon message précédent ?

Ça ne change rien, mais à noter qu'aucune des fonctions du module ne marche.

Si le paquetage n'est pas chargé, ça ne sert à rien d'aller plus
loin. Tant que l'évaluation de l'expression (require 'pg) plante, rien
de ce qui utilisera pg ne fonctionnera.
Au fait, c'est quoi pg, et à quoi ça sert ?
Vincent.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Stephane Tougard
(Vincent Belaïche) writes:
Au fait, c'est quoi pg, et à quoi ça sert ?

Cela sert à se connecter à Postgresql depuis Emacs.
Avatar
Stephane Tougard
(Vincent Belaïche) writes:
Essaie toujours d'évaluer d'abord
(add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")

Ça fonctionne (même si j'ai le sentiment que j'ai loupé un épisode
quelque part).
Avatar
vincent.belaiche
Stephane Tougard writes:
(Vincent Belaïche) writes:
Essaie toujours d'évaluer d'abord
(add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")

Ça fonctionne (même si j'ai le sentiment que j'ai loupé un épisode
quelque part).

Pour charger un paquetage Emacs a besoin que le chemin où se trouve le
fichier correspondant soit dans la liste contenue dans la variable
load-path. Je suppose que la déclaration du paquetage a pour effet de
mettre à jour cette liste.
Comme pg.el est dans le chemin ~/.emacs.d/elpa/pg-20130731.1442/, en
ajoutant (add-to-list 'load-path "~/.emacs.d/elpa/pg-20130731.1442/")
dans ton fichier d'init alors tu garanties que le chemin en question
soit dans la liste.
J'ai pensé à une autre source du problème : sans doute que la
déclaration des paquetages est faite en un point A ton fichier d'init,
alors si tu essaies de charger pg en un point B de ton fichier d'init et
que B est avant A, ça n'est pas encore déclaré.
Vincent.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus