From: | Anthony Sotolongo <asotolongo(at)gmail(dot)com> |
---|---|
To: | Marcos Ortiz <mlortiz(at)uci(dot)cu>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Usando PL/Python me arroja un SocketError: Permission denied |
Date: | 2015-05-23 15:49:34 |
Message-ID: | 5560A18E.9020204@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Marcos el usuario postgres tendrá permisos para para ejecutar en
ese rango de puerto o eso no tiene nada que ver?
De todos trata de ejecutar esta función a ver si le llegas desde dentro
de postgresql al servidor de neo4j(lo que hace es intenter conectarse un
servidor por un puerto):
CREATE OR REPLACE FUNCTION test_server_puerto( ip text, puerto
integer) RETURNS text AS
$BODY$
import socket
host=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
host.connect((ip, puerto))
host.close()
return 'OK'
except Exception,e:
return 'NO:',str(e)
$BODY$
LANGUAGE plpythonu VOLATILE
COST 100;
El 5/23/2015 a las 1:06 AM, Marcos Ortiz escribió:
> Saludos a toda la lista.
> Estoy usando PL/Python para poder conectarme a Neo4j desde PostgreSQL,
> y cuando trato de ejecutar el código me está arrojando un SocketError:
> Permission denied.
>
> Este error generalmente Python lo arroja cuando se está tratando de
> iniciar un servicio que escuche por un puerto por debajo de 1024 y se
> hace con un usuario que no tiene privilegios para hacerlo. Ahora mi
> duda es si para la ejecución de alguna función en PL/Python,
> PostgreSQL internamente use un puerto de estos.
>
> Aquí les dejo el código de la función, que al final lo que hace es
> conectarse al grafo de Neo4j y buscar si un nodo existe en el mismo.
> Neo4j usa el puerto 7474 para esto:
> ------------------------------------------------------------------------------------------------------------------
>
> CREATE OR REPLACE FUNCTION buscar_nodo_estudiante(nombre_est text)
> RETURNS text AS
> $BODY$
> from py2neo import Graph
> from py2neo.cypher import CypherTransaction
> graph = Graph("http://neo4j:neo4j(at)10(dot)8(dot)45(dot)146:7474/db/data")
> tx = graph.cypher.begin()
>
> sentencia = "MATCH (ee:Estudiante) WHERE ee.nombre = {name} RETURN ee;"
> tx.append(sentencia, parameters={'name': nombre_est})
> estudiante= tx.commit()
> if(estudiante):
> print("El estudiante es%\n", estudiante)
> else:
> print("El estudiante %s no esta dentro del grafo.%\n", estudiante)
> $BODY$
> LANGUAGE plpythonu VOLATILE
> COST 100;
> ------------------------------------------------------------------------------------------------------------------------------
>
> Este mismo código lo ejecuto en un script.py y se ejecuta normalmente
> sin problemas, pero cuando lo ejecuto desde PostgreSQL es que me da el
> Permission denied. ¿Tienen alguna idea que podría ser esto?
> Gracias de antemano.
>
> -
> Enviado a la lista de correo pgsql-es-ayuda
> (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Marcos Ortiz | 2015-05-23 16:23:38 | Re: Usando PL/Python me arroja un SocketError: Permission denied |
Previous Message | Marcos Ortiz | 2015-05-23 04:06:46 | Usando PL/Python me arroja un SocketError: Permission denied |