如何在Greenplum数据库上使用psycopg2获取最后插入的行的ID?
以下是我已经尝试过的几件不起作用的事情。
提前致谢。
答案 0 :(得分:1)
我认为最接近的是select * from seq_name
:
dwh=# select * from queue_id_seq;
sequence_name | last_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called
---------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
queue_id_seq | 127 | 1 | 9223372036854775807 | 1 | 1 | 32 | f | t
但last_value
显示任何会话分配的最后一个值
或者,您可以根据“自然主键”
回读插入的行我不会使用nextval()因为序列不是无间隙的。
答案 1 :(得分:1)
def last_insert_id(cursor, table_name, pk_name):
sequence = "{table_name}_{pk_name}_seq".format(table_name=table_name,
pk_name=pk_name)
cursor.execute("SELECT last_value from {sequence}".format(sequence=sequence))
return cursor.fetchone()[0]
你应该尝试这样的方法来解决你的问题,使其有些通用。
答案 2 :(得分:0)
SELECT lastval()能做你想做的吗?
根据postgres(我收集的是GreenPlum所依据的)Sequence Manipulation Functions的文档,它应该“返回当前会话中nextval最近返回的值。”
答案 3 :(得分:0)
如果您希望插入最后一个ID,则可以对最大ID号进行基本的SQL搜索