2011-09-18 13 views
7

Posso inviare query selezionate con qualsiasi problema ma quando invio l'aggiornamento e inserisco le query inizia ad attendere il thread e non risponde più. Non ne sono sicuro, ma sembra un loop.psycopg2 (inserire, aggiornare) problema di scrittura

So che dobbiamo usare "commit()" per applicare le modifiche ma non funziona.

Ecco il mio codice:

import psycopg2 
conn = psycopg2.connect("dbname='test' user='postgres' host='localhost' password='xx"); 
cursor = conn.cursor() 
cursor.execute("UPDATE recording SET rank = 10 WHERE id = 10;") 
conn.commit() 
cursor.close() 
+0

Sto avendo lo stesso problema le mie query di inserimento. –

risposta

-4

Il problema è psycopg2 non ha supporto per il threading.

4

E 'più probabile un blocco nel database, con il filetto/processi tentando di aggiornare lo stesso record.

+0

Uso il threading in Python per l'aggiornamento delle righe (ogni query aggiorna una riga diversa). c'è un modo per aggiornare i record senza bloccare? –

+0

Dipende da cosa devi fare. L'utilizzo di una transazione di autocommit assicurerebbe di avere transazioni brevi e il processo bloccato funzionerebbe di nuovo presto, ma in realtà dipende dall'effetto desiderato. – piro

14
import psycopg2 
conn = psycopg2.connect(database="dbasename",user="username",password='your_password',host='web_address',port='your_port') 
cursor = conn.cursor() 
cursor.execute("UPDATE table_name SET update_column_name=(%s) WHERE ref_column_id_value = (%s)", ("column_name","value_you_want_to_update",)); 
conn.commit() 
cursor.close() 

Non hai formattato correttamente la tua istruzione di esecuzione.

+0

Non vedo dov'è la variabile "cur" proveniente da ... che vergogna – CheeHow

Problemi correlati