我正在使用 psycopg2 库从 Python 2.7 将一条记录插入到 Amazon Redshift 表中,我想取回插入行的自动生成主ID .
我尝试过常用的方法,我可以在这里或使用谷歌搜索的其他网站找到,例如:
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 回答
目前不适用于Redshift,因为它不支持通过RETURNING语法返回最后一个插入ID . 您可能需要做的是在事务中使用
SELECT MAX(id) FROM schema.table;
,这可能不是您想要听到的,但似乎是您可以对当前Redshift状态执行的最佳操作 .如果您知道如何唯一地找到没有id的行,您还可以在select中查询id .