Problème python et postgresql

Page principale

Répondre à ce message
Auteur: Christian Marillat
Date:  
À: guilde
Sujet: Problème python et postgresql
Salut,

Après avoir passé ma machine en postgresql 7.4, j'ai un script python
jenna du paquet dak qui ne trouve plus le socket postgresql.

Le code python de jenna est simple :

projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]));

Et l'erreur :

,----
| pg.InternalError: could not connect to server: No such file or directory
|     Is the server running locally and accepting
|     connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

`----

et mon socket se trouve en fait dans /var/run/postgresql :

,----
| $ ls -la   /var/run/postgresql/            
| total 12
| srwxrwxrwx   1 postgres postgres    0 jun  8 11:11 .s.PGSQL.5432
| -rw-------   1 postgres postgres   34 jun  8 11:11 .s.PGSQL.5432.lock

`----

J'ai regardé le code du module python2.3-pygresql :

,----
| /* get connection socket */
| static char pg_fileno__doc__[] =
| "fileno() -- return database connection socket file handle.";
| 
| static PyObject *
| pg_fileno(pgobject * self, PyObject * args)
| {
|         if (!self->cnx)
|         {
|                 PyErr_SetString(PyExc_TypeError, "Connection is not valid");
|                 return NULL;
|         }
| 
|         /* checks args */
|         if (!PyArg_ParseTuple(args, ""))
|         {
|                 PyErr_SetString(PyExc_SyntaxError,
|                 "method fileno() takes no parameters.");
|                 return NULL;
|         }
| 
| #ifdef          NO_PQSOCKET
|         return PyInt_FromLong((long) self->cnx->sock);
| #else
|         return PyInt_FromLong((long) PQsocket(self->cnx));
| #endif
| }

`----

et c'est donc PQsocket() qui retourne le chemin de la socket.

Maintenant pourquoi le chemin du socket n'est pas bon ? Le chemin du
socket est défini en dur dans la configuration de postgresql
(/etc/postgresql/7.4/main/postgresql.conf) mais pas dans celle de
dak. Si quelqu'un a une idée ?

Christian