[PIPython] errore con query

Massimo Cecconi massimo.cecconi
Mer 23 Mar 2005 14:54:29 CET


Ciao Maurizio ora ti spiego bene la situazione in cui mi trovo!!

Allora io non ho la necessità fondamentale di usare le transazioni (ma 
mi piacciono cmq :)  ).


Tutte le prove che ho fatto sono state eseguite tramite gui e tramite idle.

Se faccio una query del tipo  (provato solo sotto gui):

     # Effettuo la connessione al database
     DATABASE = sqlite.connect('CF_BSS.db')
     # Assegnazione del cursore
     DB_BSS = DATABASE.cursor()

     for x in self.QUERY_MIX:
         query_command = self.QUERY_MIX[x]   ####<<<===  questo è un 
dizionario che contiene le query che ho raccolto e che faccio fare tutte 
insieme cliccando il pulsante di applicazuione modifiche :):)

         DB_BSS.execute( query_command )
         print query_command

     # Effettuo la conferma delle query eseguite
     DB_BSS.execute('commit')

 # Effettuo la chiusura della connessione al database
     DB_BSS.close()
     # Messaggio di avviso per il riavvio del programma


Mi da quel fastidioso messaggio di errore!!
-------------------------------------------------------

Se invece faccio questo (provato sia con gui che con idle):

DATABASE = sqlite.connect('CF_BSS.db')
DB_BSS = DATABASE.cursor()

DB_BSS.execute('UPDATE mission_name SET ability = '0' WHERE id_mission = 
'10'')
DB_BSS.execute('UPDATE mission_name SET ability = '0' WHERE id_mission = 
'12'')
DB_BSS.execute('UPDATE mission_name SET ability = '0' WHERE id_mission = 
'14'')

DB_BSS.execute('commit')
DB_BSS.close()


Con idle va tutto bene e non mi dà nessun messaggio di errore mentre con 
la gui mi da ugualmente l'errore!!
---------------------------------------------------------

Infine preciso che:

se non metto ->   DB_BSS.execute('commit')
non viene eseguita nessuna operazione sul database

se metto ->  DB_BSS.execute('BEGIN TRANSACTION')
prima delle query allora mi dice che c'è già una transazione in atto e 
che giustamente non si pèossono annidiare le transazioni!!

Sperando di essere stato più chiaro :):):)


Il commit della connection come lo si deve usare ??? mi fai un'esempio??


Maurizio Brilli ha scritto:

> Massimo Cecconi ha scritto:
>
>> Ciao,
>>
>> in effetti è la prima cosa che ho fatto ma mi dice che c'è già una 
>> transazione attivata!!??
>>
>> C'è un modo per verificare quali transazioni sono attivate??  anche 
>> tramite l'IDLE ???
>
>
> Come ti dicevo, non sono molto pratico di transazioni. Però, dopo aver 
> fatto qualche prova, mi è venuto in mente un piccolo fatto: hai 
> effettivamente intenzione di usare le transazioni? Perché, dalle prove 
> che ho fatto, ho ottenuto il tuo stesso risultato, ovvero che l'update 
> era stato eseguito e l'errore dipendeva dal fatto che non esistevano 
> transazioni. Quindi, qualche suggerimento (della serie: non so come 
> funziona, ma funziona...)
>
> 1) Se non ti servono le transazioni, non hai bisogno di dare il "commit"
> 2) Se ti dice che c'è già una transazione, prova a chiudere il 
> database, a riaprirlo e a ricominciare le tue prove (dal poco che ho 
> capito, ora stai provando dalla shell di python/idle)
> 3) Se devi usare le transazioni, prova ad usare il metodo "commit" 
> della Connection, anziché il comando SQL.
>
> Ciao
> Maurizio
>
>------------------------------------------------------------------------
>
>_______________________________________________
>La mailing list di python.it
>python a lists.python.it
>http://lists.python.it/cgi-bin/mailman/listinfo/python
>  
>



More information about the Python mailing list