[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