0

我插入一條記錄到亞馬遜紅移表從的Python 2.7使用psycopg2庫,我想回去自動生成插入行的主ID。獲取插入行的自動ID爲紅移表使用psycopg2在Python

我已經嘗試了平時的方法,我可以使用谷歌搜索發現這裏或其他網站,如:

conn=psycopg2.connect(conn_str) 
conn.autocommit = True 

sql = "INSERT INTO schema.table (col1, col2) VALUES (%s, %s) RETURNING id;" 

cur = conn.cursor() 
cur.execute(sql,(val1,val2)) 
id = cur.fetchone()[0] 

我收到cur.execute行錯誤:

ProgrammingError: syntax error at or near "RETURNING" 

有誰知道如何解決這個問題或完成相同的事情?

我不得不使用psycopg2在我的代碼

回答

2

目前無法實現的紅移,因爲它不支持通過選舉語法返回最後插入的ID。您可能需要做的是在交易中使用SELECT MAX(id) FROM schema.table;,這可能不是您想要聽到的內容,但似乎是您可以對目前的Redshift狀態執行的最佳操作。

+0

這就是我想的,謝謝@Femi – Zac

+1

可悲的是,這不是真的。我在我的案例中嘗試了Max(id)方法,但紅移不會按順序遞增標識列值..i.e。它可以在生成的ID之間留下空隙。新生成的id保證是唯一的,但不一定高於Max(id),它可以低於。例如。當前在表上的id可以是1,2,6,7,8,並且插入新記錄,它可以被賦予唯一但不超過max(id)的3的id。 –

+0

@ShrikantPrabhu,謝謝指點。 [本文](http://www.sqlhaven.com/identity-column-seed-step-with-insert-statements/)調查此問題。可能最簡單的嘗試就是使用'IDENTITY(1,1)',但我不確定它是否有幫助。 實際上不知道如何使用Redshift的缺乏關於新插入記錄的信息。 – MarSoft