Как получить вставленный или выбранный идентификатор строки в postgres с помощью python

Мой запрос postgres:

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)

Мне нужно получить идентификатор только что вставленного значения статуса, если он не существует, или выбрать его идентификатор, если он уже существует. RETURNING id полностью заблокировал этот запрос, поэтому мне пришлось удалить его, чтобы по крайней мере заставить работать выборочную вставку.

Есть какие-нибудь подсказки, как получить здесь statusId? В другом случае я выполняю Upsert. (Я nsert, если не существует, обновить в противном случае) Здесь снова мне нужен вставленный или обновленный идентификатор строки. (Нет, я не использую хранимые процедуры, если это был ваш первый вопрос ...)

Заранее спасибо

9
задан jerrymouse 19 September 2011 в 17:50
поделиться