Profilo di massimo94

Nome massimo94
Indirizzo email n/a
Messaggi2
  • Re: Programma in Python con interfaccia locale
    Forum >> Programmazione Python >> Database
    Il problema Ti è dato, in primo luogo, dalla visibilità delle variabili, così come è strutturato il codice l'user non verrà msi loggato a PostgreSQL perché non avviene alcuna connessione, che definisci all'inizio del codice con gli equivoci parametri:

        user="postgres_user",
        password="postgres_password",
        database="postgres_database"
    (Non ti da nessun errore sulla connessione?)


    Dovresti strutturarti una funzione alla quale passi i parametri di login e Ti restituisca la connessione, da invocare al login per poi proseguire con le successive operazioni.




    ... disgiuntamente dal problema "connessione", suggerirei di approfondire gli aspetti di "Visibilità" e "scope" delle variabili in python, oltre che strutturarlo considerando le classi, così come è il codice si presta molto poco ad applicazioni appena più che elementari.
    Edit integrato "user" nella citazione ... giacché ci sono aggiungo che i parametri di login inseriti dall'user non saranno mai visibili da "conn" tanto per questioni di visibilità quanto per questioni di posizione (si, anche la posizione del codice è significativa)


    --- Ultima modifica di nuzzopippo in data 2022-12-15 11:45:10 ---
    Risolto grazie eventualmente posso chiedere una libreria dall'aspetto piu moderno rispetto a tkinter?



  • Programma in Python con interfaccia locale
    Forum >> Programmazione Python >> Database
    Buongiorno,
    ho creato un codice che mischia l'interfaccia al database, però una volta partito il programma la connessione non avviene.




    In allegato il codice

    import tkinter as tk
    import psycopg2
    
    # Crea la finestra principale
    root = tk.Tk()
    
    # Crea una connessione a Postgres
    conn = psycopg2.connect(
        host="localhost",
        user="postgres_user",
        password="postgres_password",
        database="postgres_database"
    )
    
    # Crea un frame per i campi di login
    login_frame = tk.Frame(root)
    
    # Crea i campi per l'username e la password
    username_label = tk.Label(login_frame, text="Username:")
    username_entry = tk.Entry(login_frame)
    password_label = tk.Label(login_frame, text="Password:")
    password_entry = tk.Entry(login_frame, show="*")
    
    # Visualizza i campi per l'username e la password
    username_label.grid(row=0, column=0)
    username_entry.grid(row=0, column=1)
    password_label.grid(row=1, column=0)
    password_entry.grid(row=1, column=1)
    
    # Crea il pulsante di login
    login_button = tk.Button(
        login_frame,
        text="Login",
        command=lambda: login(
            username_entry.get(),
            password_entry.get()
        )
    )
    
    # Visualizza il pulsante di login
    login_button.grid(row=2, column=1)
    
    # Mostra il frame per i campi di login
    login_frame.pack()
    
    # Definisci la funzione di login
    def login(username, password):
        # Esegui una query per verificare se l'username e la password sono corretti
        with conn:
            cur = conn.cursor()
            cur.execute(
                "SELECT COUNT(*) FROM users WHERE username = %s AND password = %s",
                (username, password)
            )
            count = cur.fetchone()0
    
        # Se l'username e la password sono corretti, esegui un'azione di successo
        if count == 1:
            login_frame.destroy()
            success_label = tk.Label(root, text="Login effettuato con successo")
            success_label.pack()
        # Altrimenti, visualizza un messaggio di errore
        else:
            error_label = tk.Label(root, text="Username o password non validi")
            error_label.pack()
    
    # Avvia il loop dell'interfaccia grafica
    root.mainloop()