[Python] Digest di Python, Volume 99, Numero 10

piergiorgio pancino piertoni a yahoo.it
Mer 7 Maggio 2014 19:03:24 CEST


Intanto grazie per la risposta,


>> if __name__ == '__main__':
>>    try:
>>        csv_rapportino=ftp_connection.ftp_importazione()
>>        db=SQLServer_connection.DB_connection().connect()
>> 
>>    ...
>>
>>    except:
>>        sys.exit()
>> 
>>    finally:
>>        csv_rapportino.__exit__()
>>        db.__exit__()

>Dal (poco) codice che hai postato sembra che i due oggetti
>ftp_connection e SQLServer_connection vadano usati cosí:


>if __name__ == '__main__':
>    with (ftp_connection.ftp_importazione() as csv_rapportino,
>          SQLServer_connection.DB_connection().connect() as db):
>
>    # resto del codice nel "try:" originale qui

>Questo perché:
>
>- lo statement "with" si occupa di chiamare __exit__() all'uscita dal
>blocco, indipendentemente dal fatto che si sia verificata un'eccezione
>nel mezzo o meno
>(https://docs.python.org/2/reference/compound_stmts.html#the-with-statement)

>- sempre "with" si occupa anche di chiamare __enter__() all'entrata del
>blocco (non conosoco le classi che stai usando, ma é anche possibile che
>la connessione venga effettuata lí..)

Esatto :) infatti ho letto varie volte come usare lo statement With, ma non mi è ancora entrato in testa... quindi per cominciare se non altro ad abituarmi utilizzo comunque __enter__ ed __exit__ nelle mie classi. Diciamo che l'obiettivo è quello di usarlo :_)


>- non nascondere le eccezioni quando non serve: quell'``except:
>sys.exit()`` é completamente inutile (in caso di eccezione non gestita,
>l'interprete sa che deve terminare l'esecuzione con codice di errore)
>peró maschera un traceback potenzialmente utile per capire cosa é andato
>storto..

Non è mai un bene nasconderle, avevo fatto ciò perché se non facevo uscire il programma in caso di eccezione python e pyscripter mi si piantavano, quindi è una cosa temporanea.

Infine ho trovato l'errore:
>> if __name__ == '__main__':
>>    try:
>>        csv_rapportino=ftp_connection.ftp_importazione()
>>       #db=SQLServer_connection.DB_connection().connect()
              db=SQLServer_connection.DB_connection()
              db.connect()

>> 
>>    ...
>>
>>    except:
>>        sys.exit()
>> 
>>    finally:
>>        csv_rapportino.__exit__()
>>        db.__exit__()


In pratica quando cercavo di chiudere l'oggetto, richiamando db.__exit__() pensavo di richiamare il metodo della mia classe, mentre avendo prima sbagliato l'assegnazione andavo a richiamare il metodo __exit__ di un oggetto tipo pyodbc.Connection, con gli effetti nefasti che ho postato...
E' stata dura, ma l'ho scovato.
Grazie mille dei suggerimenti e vedrò di far pratica con il With.

Piergiorgio
Il Mercoledì 7 Maggio 2014 12:00, "python-request a lists.python.it" <python-request a lists.python.it> ha scritto:
 
Invia le richieste di iscrizione alla lista Python all'indirizzo
    python a lists.python.it

Per iscriverti o cancellarti attraverso il web, visita
    http://lists.python.it/mailman/listinfo/python
oppure, via email, manda un messaggio con oggetto `help' all'indirizzo
    python-request a lists.python.it

Puoi contattare la persona che gestisce la lista all'indirizzo
    python-owner a lists.python.it

Se rispondi a questo messaggio, per favore edita la linea dell'oggetto
in modo che sia più utile di un semplice "Re: Contenuti del digest
della lista Python..."


Argomenti del Giorno:

   1. Re: Interessante anche se datato (Carlo Miron)
   2. Re: Interessante anche se datato (Marco Beri)
   3. Re: Utile sito, sopratutto per i newbies (Carlos Catucci)
   4. Re: Strana eccezione (~redShadow~)


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

Message: 1
Date: Tue, 6 May 2014 12:18:18 +0200
From: Carlo Miron <miron a python.it>
To: Discussioni generali sul linguaggio Python
    <python a lists.python.it>
Subject: Re: [Python] Interessante anche se datato
Message-ID:
    <CAFp98etMyLdCiujKps1RaaQ0ne-BPn59V4ucJo1pueY4ni6PXg a mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

Il 05 maggio
 2014 15:11, Marco Beri ha scritto::

> 2014-05-05 12:30 GMT+02:00 Daniele Varrazzo <piro a develer.com>:
>
>> Perchè sei un vegliardo: tutto quello per cui i db relazionali sono stati
>> inventati oggi non vale più e si può fare a meno delle loro proprietà.
>> Totalmente.
>> http://hackingdistributed.com/2014/04/06/another-one-bites-the-dust-flexcoin/
>
> Ma cavolo, l'ho dovuto rileggere due volte prima di capire che mi prendevi
> in giro... due volte: per il vegliardo e perché alla fine
 concordi che i
> relazionali in alcuni casi sono ancora insostituibili (il concetto di
> transazione, per lo meno, lo è ancora).

Marco, qualora il tuo alzheimer sia cosi` galoppante da averti fatto
dimenticare chi sia il tuo interlocutore, ti presento piro...

©

-- 
:**THE BEER-WARE LICENSE** (Revision 42):
   ``miron AT python.it`` wrote this mail. As long as you retain this notice
   you can do whatever you want with this stuff. If we meet some day, and you
   think this stuff is worth it, you can buy me a beer in return.

   --*Carlo Miron*

  ..


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

Message: 2
Date: Tue, 6 May 2014 12:21:05 +0200
From: Marco Beri <marcoberi a gmail.com>
To: Discussioni generali sul linguaggio Python
    <python a lists.python.it>
Subject: Re: [Python] Interessante anche se datato
Message-ID:
    <CAN1J36idHNNT7NyxaiE47GG=DpbyEsy-7QXjk-5vPtFgRruGtg a mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

2014-05-06 12:18 GMT+02:00 Carlo Miron <miron a python.it>:

> Il 05 maggio 2014 15:11, Marco Beri ha scritto::
>
> > 2014-05-05 12:30 GMT+02:00 Daniele Varrazzo <piro a develer.com>:
> >
> >> Perchè sei un vegliardo: tutto quello per cui i db relazionali sono
> stati
> >> inventati oggi non vale più e si può fare a meno delle loro proprietà.
> >> Totalmente.
> >>
> http://hackingdistributed.com/2014/04/06/another-one-bites-the-dust-flexcoin/
> >
> > Ma cavolo, l'ho dovuto rileggere due volte prima di capire che mi
> prendevi
> > in giro... due volte: per il vegliardo e perché alla fine concordi che i
> > relazionali in alcuni casi sono ancora insostituibili (il concetto di
> > transazione, per lo meno, lo è ancora).
>
> Marco, qualora il tuo alzheimer sia cosi` galoppante da averti fatto
> dimenticare chi sia il tuo interlocutore, ti presento piro...
>

È vero, ma "piro" lo sappiamo tutti che deriva
 da "pirotecnico".

Pensavo fosse una delle sue solite magie... ;-)

Ciao.
Marco.
P.S. In realtà mica lo ricordo da cosa deriva "piro" anche se una volta me
l'aveva detto mi pare.

-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140506/51d97be0/attachment-0001.html>

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

Message: 3
Date: Tue, 6 May 2014 14:01:59 +0200
From: Carlos Catucci <carlos.catucci a gmail.com>
To: Discussioni generali sul linguaggio Python
    <python a lists.python.it>
Subject: Re: [Python] Utile sito, sopratutto per i newbies
Message-ID:
    <CAEaPG9QnEXVVWaQdCLNejKL17qR3CcwZR1aZ19xO4wqYYKm-kA a mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Altro interessante sitarello

http://tutorials.tutsplus.com/

Carlos
-- 
Coloro che sognano di giorno sono uomini pericolosi, perche' sono capaci di
recitare a occhi aperti il loro sogno fino a renderlo possibile. Ed e'
questo che feci anch'io. - (T.E. Lawrence)
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140506/2b3b2add/attachment-0001.html>

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

Message: 4
Date: Tue, 06 May 2014 14:16:20 +0200
From: ~redShadow~ <redshadow a hackzine.org>
To: python a lists.python.it
Subject: Re: [Python] Strana eccezione
Message-ID: <5368D294.1060805 a hackzine.org>
Content-Type: text/plain; charset=ISO-8859-1

On 05/06/2014 10:28 AM, piergiorgio pancino wrote:
> if __name__ == '__main__':
>     try:
>         csv_rapportino=ftp_connection.ftp_importazione()
>         db=SQLServer_connection.DB_connection().connect()
> 
>     ...
>
>     except:
>         sys.exit()
> 
>     finally:
>         csv_rapportino.__exit__()
>         db.__exit__()

Dal (poco) codice che hai postato sembra che i due oggetti
ftp_connection e SQLServer_connection vadano usati cosí:


if __name__ == '__main__':
    with (ftp_connection.ftp_importazione() as csv_rapportino,
          SQLServer_connection.DB_connection().connect() as db):

    # resto del codice nel "try:" originale qui


Questo perché:

- lo statement "with" si occupa di chiamare __exit__() all'uscita dal
blocco, indipendentemente dal fatto che si sia verificata un'eccezione
nel mezzo o meno
(https://docs.python.org/2/reference/compound_stmts.html#the-with-statement)

- sempre "with" si occupa anche di chiamare __enter__() all'entrata del
blocco (non conosoco le classi che stai usando, ma é anche possibile che
la connessione venga effettuata lí..)

- non nascondere le eccezioni quando non serve: quell'``except:
sys.exit()`` é completamente inutile (in caso di eccezione non gestita,
l'interprete sa che deve terminare l'esecuzione con codice di errore)
peró maschera un traceback potenzialmente utile per capire cosa é andato
storto..


-- 
  Samuele ~redShadow~ Santi

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


                  ----(  Contact information  )----

                   E-MAIL:  redshadow a hackzine.org
                     BLOG:  http://www.hackzine.org
                     WIKI:  http://wiki.hackzine.org
                  TWITTER:  https://twitter.com/_rshk
                   GITHUB:  https://github.com/rshk


                  ----(  GPG Key: 09F09951  )----

          1AFC FAE5 CA4B 3FB0 F300 FA64 3CB0 1008 09F0 9951


             ----(  Registered Linux-User: #440008  )----

     
     DEBIAN User since 2004 (I even used Sid!)
             GENTOO User since 2008-01-01


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

  Think about the environment: for each top-posted, badly quoted
  or bulk e-mail I receive, I'm going to cut down a tree.


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

_______________________________________________
Python mailing list
Python a lists.python.it
http://lists.python.it/mailman/listinfo/python


Fine di Digest di Python, Volume 99, Numero 10
**********************************************
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140507/78dcb328/attachment-0001.html>


Maggiori informazioni sulla lista Python