NameError: name 'conn' is not defined

RomainGA Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   -  
Diablo76 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

c mon voici le code python pour un site que j'essaye de faire avec un Streamlite:

import os
import streamlit as st
import psycopg2
from dotenv import load_dotenv

st.title("Bienvenue sur CertifApp")

def get_db_connection():
    load_dotenv()
    return psycopg2.connect(
                host=os.getenv("DB_HOST", "localhost"),
                port=int(os.getenv("DB_PORT", 5432)),
                dbname=os.getenv("POSTGRES_DB", "Certifapp"),
                user=os.getenv("POSTGRES_USER", "postgres"),
                password=os.getenv("POSTGRES_PASSWORD", "changeMe")
            )

    conn.set_client_encoding('UTF8')

# --- Création des onglets ---
tab1, tab2, tab3 = st.tabs(["Collaborateur", "Certification", "Collaborateur certifié"])

# --- Onglet Collaborateur ---
with tab1:
    st.header("Collaborateur")

    with st.form("ajout_collaborateur"):
        collaborateur_id = st.number_input("ID du collaborateur", min_value=1, step=1, format="%d")
        collaborateur_nom = st.text_input("Nom du collaborateur")
        collaborateur_prenom = st.text_input("Prénom du collaborateur")
        collaborateur_arrivaldate = st.date_input("Date d'arrivée")  # :warning: manquait dans ton code
        collaborateur_email = f"{collaborateur_prenom.lower()}.{collaborateur_nom.lower()}@openvalue.fr"
        referent_technique_id = st.number_input("ID du référent technique", min_value=1, step=1, format="%d")
        certification_recues_id = st.number_input("ID de la certification reçue", min_value=1, step=1, format="%d")

        submitted = st.form_submit_button("Ajouter le collaborateur")


        if submitted:
            conn = None
            try:
                conn = get_db_connection()
                cur = conn.cursor()

                cur.execute("...")
                conn.commit()

            except Exception as e:
                if conn:
                    conn.rollback()
                st.error(f"Erreur : {e}")
    

quand je rentre des données aléatoire; l erreur du titre apparait

que faire ? merci
Windows / Chrome 144.0.0.0it

2 réponses

jee pee Messages postés 42688 Date d'inscription   Statut Modérateur Dernière intervention   9 794
 

Bonjour,

Une remarque, en 18, dans la fonction, conn n'existe pas puisque la variable est créée en 40 et valorisée en 42 par la fonction. En plus cette ligne 18 ne devrait pas être atteinte, le return terminant la fonction.


0
Diablo76 Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   124
 

Salut,

Il y a également un autre problème c'est que la connexion n'est jamais fermée, il n'y a nulle part:

conn.close()
0