Vous n'êtes pas identifié(e).
Bonjour,
Après des recherches sur différents forums, j'ai finalement réussi à créer l'extension plpython3u. De ce que j'ai compris la version de python compatible avec Postgres 15 est la 3.10. J'ai copié le fichier pyhton310.dll dans mon chemin C:\Windows\System32 afin que de pouvoir créer l'extension.
Maintenant quand je souhaite faire fonctionner la fonction ci-dessous me permettant de récupérer des coordonnées géographiques d'une adresse, postgres se déconnecte systématiquement. Voici le message d'erreur.
The application has lost the database connection:
⁃ If the connection was idle it may have been forcibly disconnected.
⁃ The application server or database server may have been restarted.
⁃ The user session may have timed out.
Do you want to continue and establish a new session
"CREATE OR REPLACE FUNCTION geocode_nominatim(address text)
RETURNS geometry
AS $$
import requests
try:
payload = {'q': address, 'format': 'json', 'limit': 1}
base_geocode = 'https://nominatim.openstreetmap.org/search'
r = requests.get(base_geocode, params=payload)
r.raise_for_status() # Raises an exception for non-2xx responses
result = r.json()
if result:
lon = result[0]['lon']
lat = result[0]['lat']
geom = f'SRID=4326;POINT({lon} {lat})'
else:
geom = None
except requests.exceptions.RequestException as e:
# Log the error or take appropriate action
geom = None
return geom
$$
LANGUAGE 'plpython3u';"
J'ai ouvert aussi le journal afin de comprendre les erreurs, voici la description du message
"2023-08-16 11:05:29.751 CEST [13420] LOG: le système de bases de données a été arrêté à 2023-08-15 19:06:25 CEST
2023-08-16 11:10:29.684 CEST [10608] LOG: début du checkpoint : time
2023-08-16 11:10:29.710 CEST [10608] LOG: checkpoint terminé : a écrit 3 tampons (0.0%); 0 fichiers WAL ajoutés, 0 supprimés, 0 recyclés ; écriture=0.004 s, synchronisation=0.006 s, total=0.028 s; fichiers synchronisés=2, plus long=0.004 s, moyenne=0.003 s; distance=0 kB, estimation=0 kB
2023-08-16 11:13:36.931 CEST [12000] LOG: n'a pas pu recevoir les données du client : unrecognized winsock error 10054
2023-08-16 11:13:36.931 CEST [1676] LOG: n'a pas pu recevoir les données du client : unrecognized winsock error 10054
2023-08-16 11:13:36.934 CEST [4044] LOG: n'a pas pu recevoir les données du client : unrecognized winsock error 10054
2023-08-16 11:15:29.707 CEST [10608] LOG: début du checkpoint : time
2023-08-16 11:15:29.939 CEST [10608] LOG: checkpoint terminé : a écrit 3 tampons (0.0%); 0 fichiers WAL ajoutés, 0 supprimés, 0 recyclés ; écriture=0.215 s, synchronisation=0.005 s, total=0.232 s; fichiers synchronisés=3, plus long=0.002 s, moyenne=0.002 s; distance=2 kB, estimation=2 kB
2023-08-16 11:15:30.874 CEST [12596] FATAL: authentification par mot de passe échouée pour l'utilisateur « postgres »
2023-08-16 11:15:30.874 CEST [12596] DÉTAIL: La connexion correspond à la ligne 89 du pg_hba.conf : « host all all ::1/128 scram-sha-256 »
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'python'
isolated = 0
environment = 1
user site = 1
import site = 1
sys._base_executable = 'C:\\Program Files\\PostgreSQL\\15\\bin\\postgres.exe'
sys.base_prefix = ''
sys.base_exec_prefix = ''
sys.platlibdir = 'lib'
sys.executable = 'C:\\Program Files\\PostgreSQL\\15\\bin\\postgres.exe'
sys.prefix = ''
sys.exec_prefix = ''
sys.path = [
'C:\\WINDOWS\\SYSTEM32\\python310.zip',
'.\\DLLs',
'.\\lib',
'C:\\Program Files\\PostgreSQL\\15\\bin',
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'"
J'ai l'impression que postgresl n'arrive pas à se connecter correctement à python 3.10 alors que dans les variables d'environnements j'ai bien ajouté les chemin d'accès python. Si qqun à déja eu ce problème, pourrait-il m'aider svp ?
Hors ligne
J'ai copié le fichier pyhton310.dll dans mon chemin C:\Windows\System32 afin que de pouvoir créer l'extension.
Je ne suis pas utilisateur de Windows mais je suis à peu près sûr que la bonne façon de faire est de configurer le PATH ou autre variable, soit global soit pour l'utilisateur démarrant le service postgres, afin que le répertoire où python est installé soit visible. Sans ça vous n'aurez qu'une partie de python disponible et de nombreuses erreurs assez bizarres, telles que ce que vous montrez ici.
Julien.
https://rjuju.github.io/
Hors ligne