Mi postgres consulta es:Cómo se insertan o se selecciona la fila id en postgres usando pitón
query = """INSERT INTO statustable(value) SELECT '%s'
WHERE NOT EXISTS (SELECT id, value FROM statustable
WHERE value = '%s') RETURNING id""" % (status, status)
cursor_postgres.execute(query)
conn_postgres.commit()
statusId = cursor_postgres.fetchone()[0]
print "statusId" + str(statusId)
que necesita para obtener el valor de estado recién insertada Identificación si no lo existe, o seleccionar su identificación si ya existen. RETURNING id
bloqueó esta consulta por completo, así que tuve que eliminarla para que la inserción selectiva funcione al menos.
¿Alguna pista sobre cómo obtener el ID de estado aquí? En otra instancia, estoy haciendo un Upsert. (Insertar si no existe, actualizar de lo contrario) Aquí de nuevo, necesito la identificación de fila insertada o actualizada. (No, no estoy utilizando procedimientos almacenados, si ese era su primera pregunta ...)
Gracias de antemano
Me parece que la manera más rápida de hacer esto es hacer tres consultas (dentro de una transacción, si es necesario). 1) "ID SELECCIONAR DESDE ajustable DONDE valor = '% s'"% (estado) 2) Si no se devolvieron las filas, "INSERTAR EN ESTABLECIBLE (valor), '% s'"% (estado). 3) "SELECT curval (pk_seq)" cualquiera que sea pk_seq se llama como la secuencia para su identificación de clave principal. Pero como esto no es lo que pediste, no está en una respuesta. –
gracias por la respuesta @ed. De hecho, 2 y 3 se pueden combinar mediante 'INSERT INTO variable (valor),'% s 'RETURNING id "% (estado)' ya que esto también devolverá la identificación. Pero estaba buscando poner todo esto en uno. – jerrymouse