gpt4 book ai didi

python - 在cx_oracle python中获取序列号

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:36 25 4
gpt4 key购买 nike

我正在尝试执行具有序列号列的插入语句,但无法确定返回值。

当我执行以下语句而不绑定(bind) seqvalue 时,出现错误。当我将 seqvalue 初始化为 0 并将其绑定(bind)时,输出为 0。

代码

    col2 = 'test'
qry=insert into table1 (col1,col2) value (seq1.nextval,:col2) returning col1 into :seqvalue

cur.excute(qry,:col2)

请提供您的意见。

最佳答案

您可以尝试使用绑定(bind)变量并准备语句,这将使用与 SEQ.nextval 相同的 oracle 方法。步骤:

  1. 使用 cx_Oracle 建立数据库连接。

  2. 从数据库连接获取游标。

  3. 声明变量:它将被推送到 Oracle insert 语句中。例如下面的例子:

var_CHANGES = '测试更改'var_COMMENTS = '测试'

  • 使用下一行字符进行声明,如下例所示:
  • statement = "INSERT"                    + "\n" + \
    "INTO CHANGE_LOG" + "\n" + \
    "( CHANGE_LOG_ID" + "\n" + \
    ", CHANGE_TYPE" + "\n" + \
    ", CHANGE_DATE" + "\n" + \
    ", COMMENTS )" + "\n" + \
    "VALUES" + "\n" + \
    "( CHANGE_LOG_SEQ.nextval" + "\n" + \
    ", :bCHANGE_TYPE" + "\n" + \
    ", sysdate" + "\n" + \
    ", :bCOMMENTS )"

    然后,使用正则表达式替换格式化查询:

    stmt = re.sub('\s+',' ',stmt.replace('\n',' ').replace('\r',''))

  • 使用cursor.execute执行查询。按照上面的例子:
  • cursor.execute(statement, bCHANGE_TYPE=var_CHANGES     \
    , bCOMMENTS = var_COMMENTS )

  • 执行提交语句
  • 因此,在这里您可以像普通 SQL 查询一样使用 SQL nextval() 和 sysdate。这应该适合你。

    关于python - 在cx_oracle python中获取序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13459703/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com