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

Je vous mets-ci dessous ma fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 journal de postgres

"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 ?

Cordialement,

--