2011-09-18 16 views
7

Puedo enviar consultas de selección con cualquier problema, pero cuando envío actualizaciones e inserto consultas, comienza a esperar el hilo y ya no responde. No podría estar seguro, pero parece un bucle.psycopg2 (insertar, actualizar) problema de escritura

Sé que debemos usar "commit()" para aplicar cambios pero no funciona.

Aquí está mi código:

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

Tengo este mismo problema que las consultas de inserción. –

Respuesta

-4

El problema es que psycopg2 no admite el enhebrado.

4

lo más probable es un bloqueo en la base de datos, con rosca/procesos intentando actualizar el mismo registro.

+0

Uso el enhebrado en Python para actualizar las filas (cada consulta actualiza una fila diferente). ¿Hay alguna manera de actualizar los registros sin bloquear? –

+0

Depende de lo que tenga que hacer. El uso de una transacción de autocomprado aseguraría tener transacciones cortas y el proceso bloqueado volvería a funcionar pronto, pero realmente depende del efecto deseado. – 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() 

No formateó correctamente su instrucción de ejecución.

+0

No veo de dónde viene la variable "cur" ... qué lástima – CheeHow

Cuestiones relacionadas