Profilo di Daniele aka Palmux

Nome Daniele aka Palmux
Indirizzo email ask@me
AvatarAvatar utenti
Messaggi908
  • Re: Relazioni tra campi di tabelle diverse
    Forum >> Programmazione Python >> Database
    Se vuoi un consiglio Alberto, devi studiare un po' prima di agire, qui non si tratta di un comando o di una formula magica, qui si parla di progettazione dei database e relazioni tra le tabelle. A monte del tuo codice devi definire queste relazioni e solo poi creare tali relazioni tramite DB/framework/wrapper.

    Prendi un foglio di carta ed una penna e comincia a disegnare le varie relazioni, altrimenti non ne vieni più fuori, sopratutto all'inizio, ti basta una cosa semplice come quella qui sotto.



    Esistono software e una marea di guide online, ma l'importante è che devi capire cosa stai facendo. Usando un qualsiasi database SQL, le relazioni saranno pressoché uguali da comprendere e da realizzare, ma devi metterci del tuo, il DB è solo uno strumento.

    Insomma per sintetizzare, prima di perderti nella pratica formati delle solide basi teoriche.

    Cya
  • Re: Richiamare una funzione in Python 3
    Forum >> Principianti
    Ti ho sistemato la formattazione, ricordati sempre di usare il tasto apposito per inserire codice.

    Cya

  • Re: ipython
    Forum >> Principianti
    Ciao caro, sicuramente è un mio limite, ma non credo di aver capito quale sia il tuo problema.


    Prova a rispiegarlo con altre parole.

    Cya

  • Re: setup.py per creare eseguibili
    Forum >> Principianti
    Ciao caro, visto che si tratta dello stesso argomento avresti potuto accorpare tutto in un unico messaggio e fare più domande, non trovi sia più comodo?

    Comunque a parte questo, non so aiutarti perché non uso e non distribuisco nulla per Windows ormai da tempo immemore. Ho fatto alcune prove con pyinstaller (oltretutto lo sviluppatore è italiano e fa parte di Python Italia) ed è stato tutto molto semplice da usare, ma sono state prove senza nessuna velleità particolare.

    Cya

    P.S. Nel caso ricorda sempre che ci sono anche le nostre altre risorse come la mailing list e i canali social.
  • Re: TKinter, lanciare una funzione ad ogni carattere digitato in Entry()
    Forum >> Programmazione Python >> GUI
    Ciao, ho adattato uno script che avevo fatto un po' di tempo fa, vedi se può servirti.

    #Testato con Python 3.5.2 @ GNU/Linux
    from tkinter import *
    
    #Qui si copia il valore
    def callback(source):
        result.set(source.get())
    
    #Assegnazioni principali
    master = Tk()
    source = StringVar()
    result = StringVar()
    
    #Chiamata al callback
    source.trace("w", lambda name, index, mode, source=source: callback(source))
    
    #Label & Entry
    l1 = Label(master, text="Entry 1")
    e1 = Entry(master, textvariable=source)
    l2 = Label(master, text="Entry 2")
    e2 = Entry(master, textvariable = result)
    l3 = Label(master, text="by Palmux",font=("Helvetica", 7))
    
    #Pack
    l1.pack()
    e1.pack()
    l2.pack()
    e2.pack()
    l3.pack()
    
    #Loop
    master.mainloop()
    Ottieni questo:



    Cya

  • Re: scrivere / leggere dati su/da file e gestirli in classi
    Forum >> Principianti
    Ciao caro, ti ho aggiunto e modificato un po' di cosette, ma tieni presente che:
    1. Ho cercato di non cambiare troppo il tuo codice, in modo da non disorientarti, ma non è detto che quanto lasciato sia la soluzione migliore. Ci sono molte ripetizioni ad esempio, che eviterei;
    2. Non usare il codice in produzione, è fatto solo per farti partecipe dei vari passaggi, il tutto andrebbe aggiustato ed anzi passerei al punto 3;
    3. Ti consiglio caldamente l'uso di un wrapper per l'interazione col DB, ce ne sono anche di leggerissimi.

    Te lo copio/incollo qui sotto, ma se preferisci trovi tutto anche qui...

    #Testato con Python 3.5.2
    import sqlite3
    
    # Prova_db_presepe
    class PRESEPE_SALVA:
        def __init__(self, database = "presepe.db"):
            self.database = database
            self.connection = sqlite3.connect(database)
            self.cur = self.connection.cursor()
    
        def close(self):
            """chiudi la connessione a sqlite3"""
            self.connection.close()
    
        def __execute(self, data):
            """esegui i dati passati con data"""
            v = self.cur.execute(data)
            return v
    
        def __commit(self):
            """commit al database"""
            self.connection.commit()
    
        def presepe_salva(self, *args):
            # Crea tabella se non esistenti
            self.__execute('''CREATE TABLE IF NOT EXISTS scheda_1 (evento TEXT, time TEXT, rele_8 TEXT, rele_7 TEXT, rele_6 TEXT,rele_5 TEXT,rele_4 TEXT,rele_3 TEXT,rele_2 TEXT,rele_1 TEXT)''')
            self.__execute('''CREATE TABLE IF NOT EXISTS scheda_2 (evento INTEGER, time INTEGER, rele_8 INTEGER, rele_7 INTEGER, rele_6 INTEGER,rele_5 INTEGER,rele_4 INTEGER,rele_3 INTEGER,rele_2 INTEGER,rele_1 INTEGER)''')
            self.__execute('''CREATE TABLE IF NOT EXISTS scheda_3(evento INTEGER, time INTEGER, rele_8 INTEGER, rele_7 INTEGER, rele_6 INTEGER,rele_5 INTEGER,rele_4 INTEGER,rele_3 INTEGER,rele_2 INTEGER,rele_1 INTEGER)''')
            self.__execute('''Create TABLE IF NOT EXISTS scheda_4 (evento INTEGER, time INTEGER, rele_8 INTEGER, rele_7 INTEGER, rele_6 INTEGER,rele_5 INTEGER,rele_4 INTEGER,rele_3 INTEGER,rele_2 INTEGER,rele_1 INTEGER)''')
            # Inserisco i dati proveniente dall'istanza
            self.cur.executemany("INSERT INTO scheda_1 VALUES (?,?,?,?,?,?,?,?,?,?)", (args,))
            # Dati inseriti manualmente (consiglio di astrarli)
            self.__execute("INSERT INTO scheda_2 VALUES (1,50,60,61,60,61,61,60,61,61)")
            self.__execute("INSERT INTO scheda_3 VALUES (1,70,60,60,61,60,61,61,60,61)")
            self.__execute("INSERT INTO scheda_4 VALUES (1,90,61,61,60,61,60,60,61,60)")
            # Commit
            self.__commit()
    
        def test(self, scheda):
            """test per vedere se ci sono dati nella tabella passata"""
            try:
                for row in self.__execute("SELECT * FROM {} ORDER BY time".format(scheda)):
                    print(row)
            except TypeError:
                print("Nessun dato presente nella tabella {}".format(scheda))
            except sqlite3.OperationalError:
                print("Tabella {} non esiste".format(scheda))
    
    #Ok, ora proviamo il lavoro
    pos = PRESEPE_SALVA()
    pos.presepe_salva(1,20,61,61,61,60,60,61,60,60) #passo i tuoi dati qui
    pos.test("scheda_1")
    pos.test("scheda_2")
    pos.test("scheda_3")
    pos.test("scheda_4")
    pos.test("scheda_5") #Solo per provare
    pos.close()
    Ciao e buone prove...

  • Re: Esportare un progetto realizzato con PyCharm
    Forum >> Programmazione Python >> IDE ed Editor
    Salve, alla fine bastava creare il file exe dal file py principale, poi assorbe in automatico tutte le funzioni create negli altri file. Buona giornata :)
    Grazie della condivisione. :birrame:


  • Re: Utilizzi file con istruzione import che si trovano in cartelle diverse
    Forum >> Principianti
    Hai diversi modi di fare quello che chiedi, ad esempio potresti aggiungere con sys.path.insert(0, "path/al/file") e vedere che effetto fa, anche sys.file.append() potrebbe fare al caso tuo, studiati le differenze. Esistono anche metodi migliori, guardati qualcosa su __init__.py (non so che versione di Python usi) e scoprirai un bel mondo ai tuoi piedi.

    Cya
  • Re: scrivere / leggere dati su/da file e gestirli in classi
    Forum >> Principianti
    Grazie Daniele, ci avevo già fatto un pensierino ma non so da dove partire, per gestire il salvataggio su db dei dati dalle classi.
    La mia confidenza con le classi è uguale alla confidenza con i db .... veramente bassa.
    Apprendere l'utilizzo di un database, anche relativamente semplice come SQLite, farà di te un programmatore migliore e più versatile. Non averne paura, anzi consideralo come un compagno di viaggio. Alla fine si tratta di salvare informazioni testuali e di capirne le logiche di utilizzo, non altro.

    Buon divertimento.

  • Guido van Rossum ha detto basta
    Forum >> Notizie
    Sono passati diversi giorni, ma ancora non si è spento l'eco della decisione di Guido van Rossum di prendersi una pausa di riflessione dal suo ruolo di "benevolent dictator for life" di Python (che evidentemente troppo for life non era).

    Infatti il 12 luglio sulla mailing-list ufficiale del linguaggio (trovate qui il messaggio originale), Guido ha dichiarato: "Ora che la PEP 572 è finita, non voglio più dover lottare così duramente per una PEP e scoprire che così tante persone disprezzano le mie decisioni. Desidero rimuovere la mia figura da ogni processo decisionale. Sarò ancora presente per un po' come se fossi un normale core developer, e sarò ancora disponibile per guidare le persone, forse più disponibile. Ma fondamentalmente mi sto dando una vacanza permanente dall'essere BDFL, sarete soli ora."

    Inutile dire che questa decisione ha sollevato tante reazioni diverse ed anche molti attestati di solidarietà per Guido che a mezzo social, ha ringraziato tutti per la solidarietà, ma ha anche ribadito di aver bisogno di un lungo periodo di riposo.

    Ad oggi non sappiamo cosa sarà del futuro di Guido col suo ruolo di BDFL, se si è trattato di un eccesso di frustrazione momentaneo o se le strade sono destinate a restare divise. Per ora quello che sappiamo è che dopo la sua uscita, la PEP 572 è stata approvata.