Profilo di trescon

Nome trescon
Indirizzo email python.alby@gmail.com
AvatarAvatar utenti
Messaggi206
Firma forum
------
Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Ciao Nuzzopippo, se non ti è di troppo disturbo ..... CERTO che accetto un esempio esemplificato. Sono settimane che sono fermo con il "progetto" perchè non riesco a trovare come incastrare Tkinter con una routine che interviene ogni 4-6 secondi.

    Disturbo?, no, nessun disturbo, anzi, mi permette di scrostare la ruggine dal mio cervello di pensionato.




    Non so se quello che Ti propongo sia un sistema di "pushing" del tipo indicato da @Palmux, è una metodologia che ho sviluppato nel corso del tempo per applicazioni che non richiedano aggiornamenti frenetici dei dati e si basa su di un oggetto singleton cui è possibile iscrivere dei metodi/funzioni di parti di una propria applicazione agente in thread separati in "gruppi" di osservatori che si scambiano messaggi (liste di dati in realtà) tra di loro.




    Puoi vedere qui l'esempio che Ti ho preparato, consiste in una finestra che espone dei messaggi non letti inseriti in un database SQLite3 minimale, più o meno sulla falsa riga di come indicato da @Daniele posts fa, i messaggi sono da inserire esternamente, in una shell SQLite nel caso.

    L'applicazione è composta da tre piccoli moduli, ognuno "specializzato" per un compito: comunicazione, lettura dati, esposizione e comando.

    L'interazione tra le parti avviene tramite i "messaggi", che ho provato a spiegare, spero mi sia riuscito di essere chiaro.




    Se ci sarà bisogno di chiarimenti, a disposizione, se riterrete, Tu e gli esperti, di farmi sapere cosa ne pensate mi farà piacere.

    Ciao :)


    Ciao Nuzzopippo, ho letto frugalmente (per ora) il tuo esempio e ho apprezzato il tuo " ... credo che l'essenziale sia tutto qui."

    Mi rendo conto che sono indietro "anni Luce" con la conoscenza di Python.

    Il tuo esempio è un portento a penso che lo capiro' tra qualche mese.... troppo sofisticato x me (almeno a prima vista); appena ho un attimo lo studiero attentamente ed eventualmente ti chiedero' lumi.

    Grazie ancora per il lavorone che hai fatto x imbastirlo.



    ------
    Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Ciao, il mio problema ora è di far convivere nello stesso script l'interfaccia tkinter (che so essere task monopolizzate) e la routine che devo eseguire ogni 30/60 secondi per vedere se ci sono messaggi nuovi.
    Come posso fare a far eseguire il task per la verifica finchè ho l'interfaccia tkinter in esecuzione ?
    I Miei saluti.




    Segnalo che venerdì scorso, ad un mio tentativo (piuttosto voluminoso) di rispondere al quesito soprastante, si è avuta una anomalia che ha creato un riferimento senza titolo ed a me intestato nella sezione "database", non accessibile e visibile alla pagina di riepilogo delle sezioni, questo perché possano, eventualmente, prendersi provvedimenti inerenti.




    Per il problema di @trescon, provo s rispondere ora in maniera succinta.

    Hai diverse metodologie a disposizione, la più "immediata" (e forse problematica) è di creare un metodo/funzione che richiami ricorsivamente se stessa ogni tot di tempo utilizzando il metodo "after" delle finestre tkinter.

    Personalmente evito di utilizzare la metodologia sopra, nel tempo ho preso l'abitudine, per situazioni non critiche, di utilizzare thread in parallelo, con un protocolli di comunicazione utilizzanti il pattern observer ed un intermediario di tipo singleton per lo smistamento delle comunicazioni, di norma senza l'uso di queue (dato che parlo di sistemi non critici) ... ho cercato di esemplificare in dettaglio ma sono intervenuti i problemi su detti.

    Se ritieni Ti bisogni un esempio di tal genere fai sapere che cercherò di implementare un esempio minimale a Tuo uso e vedrò di spiegarlo altrove e poi vedo di renderlo disponibile.




    Ciao


    Ciao Nuzzopippo, se non ti è di troppo disturbo ..... CERTO che accetto un esempio esemplificato. Sono settimane che sono fermo con il "progetto" perchè non riesco a trovare come incastrare Tkinter con una routine che interviene ogni 4-6 secondi.

    Grazie

    Ciao



    ------
    Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Daniele aka Palmux said @ 2024-04-05 08:56:53:
    Buonasera, da prove fatte sembre funzionare senza errori di accessi simultanei…. Ora il problema è diverso.
    Avendo il db che lavora in solitaria su un Nas, ora sorge il problema di avvisare l’utente destinatario dell’ultimo messaggio inviato al db. (Che è arrivato un nuovo messaggio x lui)

    Come posso fare ?

    Interrogare ogni tot secondi per verificare la presenza di messaggi nuovi da parte di tutte le postazioni coinvolte?

    Come posso fare a capire se il messaggio è nuovo ? Nei campi del db non è previsto un campo ora ma solo la data. (Dovrei fare un confronto con uno stato precedente ….)

    Grazie per i suggerimenti che riuscirete a darmi.
    Ciao caro, potresti creare uno mini script che verifica la presenza di nuovi messaggi ogni tot tempo e poi, non so come è composto il tuo enviroment, si potrebbe "pushare" chi di dovere con la notifica del nuovo messaggio, ma devi implementare un mini sistema di pushing o magari usare altri servizi già pronti all'uso. Ma forse si sta sparando al moscerino col fucile da elefanti, in effetti potresti fare come hai descritto, lasciare che ogni postazione controlli ogni tot di tempo se ci sono nuovi messaggi, tanto hai poche postazioni se ricordo bene.

    Per sapere se il messaggio è letto o meno guarda non impazzire, metti semplicemente uno status che una volta letto cambia lo stato del messaggio, identificando così se è letto o meno. Se non vuoi cambiare le tabelle attuali, aggiungine una con l'id del messaggio ed il suo status, che cambierai a seconda delle attività dell'utente. Metodo semplice ed efficace.

    Hai davvero diverse strade davanti a te, devi solo provare a vedere quella più facile da realizzare ed a liberare la fantasia.

    Buon divertimento e happy coding.


    Ciao, il mio problema ora è di far convivere nello stesso script l'interfaccia tkinter (che so essere task monopolizzate) e la routine che devo eseguire ogni 30/60 secondi per vedere se ci sono messaggi nuovi.

    Come posso fare a far eseguire il task per la verifica finchè ho l'interfaccia tkinter in esecuzione ?




    Grazie
    ------
    Alberto
  • Re: Installzione fpdf2
    Forum >> Programmazione Python >> GUI
    Ciao Nuzzopippo e grazie; io lo avevo immaginato perché cosi è riportato nelle documentazione ma perché io se in uno script importo la libreria fpdf ottengo l’errore che ho riportato ? Se io guardo i pacchetti installati vedo fpdp2 vers. 2.7.8. Installata …..allora perchè dell’errore ?

    Vuoi dire che nell'ambiente python con i pacchetti che hai indicato nel primo post l'errore lo ottieni quando esegui

    >>> from fpdf import FPDF
    
    
    ... se è così è molto strano, non dovrebbe succedere a meno che non sia stata in qualche modo corrotta l'installazione di fpdf2 o che Tu stia in un ambiente python diverso da quello che Ti da l'elenco di pacchetti esposto.

    Suggerirei di provare, nell'ambiente che Ti da quell'elenco di pacchetti di aprire una sessione python da terminale e provare a fare l'import manualmente dal prompt, se non Ti da errori, avrai l'indicazione che il problema sorge nel contesto di esecuzione (ambiente python diverso), se invece avrai errori copia l'intera sessione, compreso il traceback, e postala come codice, come ho fatto io, indicando il contesto con cui operi (s.o., eventuali IDE, altre notizie significative) perché si possa valutare

    ... certo, non è detto che noi si possa riprodurre il Tuo problema, ma almeno si potrà cercare di ragionarci su.




    Per altro, hai provato a crearti un venv "pulito", ad installarci li fpdf2 e provarne l'utilizzo in quel venv?




    Fai sapere, ciao


    Allora.... io ho provato a eseguire il programmino dall'idle di python e da un altro programma (Geany) e funziona regolale......... la prova che non funzionava l'avevo fatta con Thonny.

    Strano perchè io uso indifferentemente l'uno o l'altro e di solito non ho problemi...... sarei curioso di sapere perchè però succede questo; potrebbe capitarmi in altri contesti.

    Se qualcuno ha qualche suggerimento....

    Io nella cartella dove risiede il file di prova ho provato il comando "pip list" e laq libreria fpdf2 la vedo....... boh

    Grazie



    ------
    Alberto
  • Re: Installzione fpdf2
    Forum >> Programmazione Python >> GUI
    fpdf2 è un fork di fpdf, quando lo installi viene generato un modulo "fpdf" che è quello da importare per operare, considerando di installarlo in un virtusl rnvironment, nella cartella "xxx_venv/lib64/pythonx.xx/site-packages" verranno create DUE cartelle, una denominata "fpdf2-2.7.8.dist-info" che conterrà le informazioni generali sul pacchetto, l'altra denominata "fpdf" che conterrà i veri moduli da utilizzare.

    Pertanto, anche se in se il pacchetto è identificato quale "fpdf2" per utilizzare la libreria a livello operativo bisognerà utilizzare "fpdf" quale modulo, fpdf2 NON lo è ... tale import è indicato chiaramente nel tutorial e negli esempi.
    Un esempio di sessione in un mio venv che forse chiarirà meglio :
    NzP:~$ source firme_v/bin/activate
    (firme_v) NzP:~$ python -m pip list
    Package                 Version
    ----------------------- -------
    defusedxml              0.7.1
    FindSystemFontsFilename 0.2.0
    fontmeta                1.6.1
    fonttools               4.47.2
    fpdf2                   2.7.8
    freetype-py             2.4.0
    pillow                  10.2.0
    pip                     22.0.2
    setuptools              59.6.0
    uharfbuzz               0.39.0
    (firme_v) NzP:~$ python
    Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import fpdf2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ModuleNotFoundError: No module named 'fpdf2'
    >>> import fpdf
    >>> fpdf.__version__
    '2.7.8'
    >>> from fpdf import FPDF
    >>> quit()
    (firme_v) NzP:~$
    come puoi vedere, pur essendo il "package" identificato quale fpdf2 esso non è un modulo, il modulo è "fpdf" ed ha la stessa versione ("2.7.8") del package.

    Ciao :)



    --- Ultima modifica di nuzzopippo in data 2024-04-05 07:23:38 ---
    Ciao Nuzzopippo e grazie; io lo avevo immaginato perché cosi è riportato nelle documentazione ma perché io se in uno script importo la libreria fpdf ottengo l’errore che ho riportato ? Se io guardo i pacchetti installati vedo fpdp2 vers. 2.7.8. Installata …..allora perchè dell’errore ?

    Grazie
    ------
    Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Daniele aka Palmux said @ 2024-04-05 08:56:53:
    Buonasera, da prove fatte sembre funzionare senza errori di accessi simultanei…. Ora il problema è diverso.
    Avendo il db che lavora in solitaria su un Nas, ora sorge il problema di avvisare l’utente destinatario dell’ultimo messaggio inviato al db. (Che è arrivato un nuovo messaggio x lui)

    Come posso fare ?

    Interrogare ogni tot secondi per verificare la presenza di messaggi nuovi da parte di tutte le postazioni coinvolte?

    Come posso fare a capire se il messaggio è nuovo ? Nei campi del db non è previsto un campo ora ma solo la data. (Dovrei fare un confronto con uno stato precedente ….)

    Grazie per i suggerimenti che riuscirete a darmi.
    Ciao caro, potresti creare uno mini script che verifica la presenza di nuovi messaggi ogni tot tempo e poi, non so come è composto il tuo enviroment, si potrebbe "pushare" chi di dovere con la notifica del nuovo messaggio, ma devi implementare un mini sistema di pushing o magari usare altri servizi già pronti all'uso. Ma forse si sta sparando al moscerino col fucile da elefanti, in effetti potresti fare come hai descritto, lasciare che ogni postazione controlli ogni tot di tempo se ci sono nuovi messaggi, tanto hai poche postazioni se ricordo bene.

    Per sapere se il messaggio è letto o meno guarda non impazzire, metti semplicemente uno status che una volta letto cambia lo stato del messaggio, identificando così se è letto o meno. Se non vuoi cambiare le tabelle attuali, aggiungine una con l'id del messaggio ed il suo status, che cambierai a seconda delle attività dell'utente. Metodo semplice ed efficace.

    Hai davvero diverse strade davanti a te, devi solo provare a vedere quella più facile da realizzare ed a liberare la fantasia.

    Buon divertimento e happy coding.


    Grazie Daniele… anche perché se per caso le postazioni fanno delle interrogazioni contemporanee l’sqlite3 lo permette e non dovrebbe darmi errori/problemi ….. giusto.

    Grazie
    ------
    Alberto
  • Installzione fpdf2
    Forum >> Programmazione Python >> GUI
    Buonasera, per un progetto sto installando per delle prove il pacchetto fpdf2.
    Il pacchetto , installato con pip, lo vedo :





    Package Version

    ------------------------- --------

    altgraph 0.17.4

    certifi 2024.2.2

    charset-normalizer 3.3.2

    defusedxml 0.7.1

    et-xmlfile 1.1.0

    fonttools 4.50.0

    fpdf2 2.7.8





    Voprei un aiuto per capire come mai quando eseguo :




    from fpdf import FPDF




    mi viene risposto :





    from fpdf2 import FPDF

    ModuleNotFoundError: No module named 'fpdf2'


    Premetto che ho provato ad importare sia fpdf che fpdf2 e il risultato è lo stesso


    Grazie


    --- Ultima modifica di trescon in data 2024-04-04 20:13:22 ---
    ------
    Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Buonasera, da prove fatte sembre funzionare senza errori di accessi simultanei…. Ora il problema è diverso.
    Avendo il db che lavora in solitaria su un Nas, ora sorge il problema di avvisare l’utente destinatario dell’ultimo messaggio inviato al db. (Che è arrivato un nuovo messaggio x lui)

    Come posso fare ?

    Interrogare ogni tot secondi per verificare la presenza di messaggi nuovi da parte di tutte le postazioni coinvolte?

    Come posso fare a capire se il messaggio è nuovo ? Nei campi del db non è previsto un campo ora ma solo la data. (Dovrei fare un confronto con uno stato precedente ….)

    Grazie per i suggerimenti che riuscirete a darmi.




    Alberto
    ------
    Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Teniamo conto che ci sono pochissime possibilità che 2 utenti scrivano in contemporanea.



    In tutti i casi che framework mi suggeriresti, oppure che database multi utente; cosi magari ci do un occhio.




    Con i miei accessi contemporanei (quasi nulli) dici che si inutile la soluzione di più database ?




    Grazie
    ------
    Alberto
  • Re: sqlite3 in rete
    Forum >> Programmazione Python >> Database
    Il database “at personam” lo avevo pensato per evitare che se due scrivessero qualcosa casualmente in contemporanea non avrei avuto problemi.
    Poi visto che qualcuno più esperto di me mi dice perché non uso altri tipi di db (io ho sol una minima esperienza in SQLite) … potrei anche provare ma non saprei cosa usare che abbia la contemporaneità eventuale e che non sia troppo “complesso”.

    Per rispondere ad una domanda i datai da scrivere sarebbero pochi, una riga di db con una 10na di campi.




    Grazie
    ------
    Alberto