python - 检索 Oracle DB 12c 中最近插入的标识

标签 python oracle oracle12c

我想返回给我(通过 python 中的 cx_oracle)为我插入的行创建的身份的值。我想我可以自己弄清楚 python 位,如果有人可以说明如何修改我的 SQL 语句以获取新创建的行的 ID。

我有一个用类似下面的东西创建的表:

CREATE TABLE hypervisor
  (
    id NUMBER GENERATED BY DEFAULT AS IDENTITY (
    START WITH 1 NOCACHE ORDER ) NOT NULL ,
    name       VARCHAR2 (50)
  )
  LOGGING ;
ALTER TABLE hypervisor ADD CONSTRAINT hypervisor_PK PRIMARY KEY ( id ) ;

我有类似于以下的 SQL:

insert into hypervisor ( name ) values ('my hypervisor')

有没有简单的方法获取新插入行的id?如果可能的话,我很乐意修改我的 SQL 语句以使其返回。

关于此问题的大多数 google 搜索都是针对版本 11 及以下版本的,它们不支持自动生成的标识列,因此希望这里有人可以提供帮助。

最佳答案

采用 user2502422 上面所说的内容并添加 python 位:

newest_id_wrapper = cursor.var(cx_Oracle.STRING)
sql_params = { "newest_id_sql_param" : newest_id_wrapper }
sql = "insert into hypervisor ( name ) values ('my hypervisor') " + \             
      "returning id into :python_var"
cursor.execute(sql, sql_params)
newest_id=newest_id_wrapper.getvalue()

关于python - 检索 Oracle DB 12c 中最近插入的标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327135/

相关文章:

Python 和 os.chroot

sql - 如何返回 DBTIMEZONE 名称

sql - Oracle PL/SQL 的单元测试框架?

ruby-on-rails - 如何在 rails 上更新 oracle clob 列 ruby​​,错误 : string literal too long

oracle - oracle 12.1 db sqlplus 错误乱码

sql - ora-30667 不能在空列的默认值上删除非空约束

python - salt 栈 : Properties (computed values) for data from SLS files?

python - 等待进程结束,该进程由名为

python - 笨拙的理解清理

mysql - SELECT SUM(1) FROM ( SELECT '0' as R FROM dual UNION ALL SELECT '1' as R FROM dual )