使用Python中的psycopg2获取插入行的自动id到Redshift表中

我正在使用 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)

2 years ago

目前不适用于Redshift,因为它不支持通过RETURNING语法返回最后一个插入ID . 您可能需要做的是在事务中使用 SELECT MAX(id) FROM schema.table; ,这可能不是您想要听到的,但似乎是您可以对当前Redshift状态执行的最佳操作 .

2 years ago

如果您知道如何唯一地找到没有id的行,您还可以在select中查询id .