在 oracle apex (v20) 中插入当前日期时间 Python

Inserting current date time in oracle apex (v20) Python

我在 Python 中使用 cx_Oracle 来更新 Apex table 中的时间戳列。

这是我所做的:

  sql1 = ('SELECT * from ab.TEMPTABLE');
  sql2 = ('UPDATE AB.CTIMEUPDATED SET TSTAMP = SYSTIMESTAMP')
    try:
        connection=self.get_connection()
        with connection.cursor() as cursor:
             cursor.execute(sql2)
             cursor.execute(sql1)

这不会更新 CTIMEUPDATED table 中的值,但是如果

我 运行 在 Python 之外的 SQL 命令浏览器中使用相同的命令,它工作得很好。

我也尝试过类似的其他选择

d=datetime.datetime.now()
dtime=d.strftime("YYYY/MM/DD HH:mm:ss (%Y/%m/%d %H:%M:%S)")
cursor.prepare( "INSERT INTO AB.CTIMEUPDATED(Tstamp) VALUES(TO_DATE(:TS))" )
cursor.setinputsizes(TS=cx_Oracle.TIMESTAMP)
cursor.execute(None, {'TS':dtime})

cursor.execute("INSERT INTO AB.CTIMEUPDATED(Tstamp) VALUES(TO_DATE(:TS, 'yyyy/mm/dd hh24:mi:ss'))", {'TS': dtime})

没有任何效果,也没有错误。

CTIMEUPDATED table 有一个列 TSTAMP 不可为空且数据类型为 TIMESTAMP(6)

注意:我不需要毫秒,只有日期和时间应该没问题

这里有两个选择

要么你commit使用相应的方法进行交易

  cursor.execute("INSERT INTO AB.CTIMEUPDATED(Tstamp) VALUES(TO_DATE(:TS, 'yyyy/mm/dd hh24:mi:ss'))", {'TS': dtime})
    connection.commit()

或者您使用 autocommit 设置为 ON

 connection.autocommit = True 
     cursor.execute("INSERT INTO AB.CTIMEUPDATED(Tstamp) VALUES(TO_DATE(:TS, 'yyyy/mm/dd hh24:mi:ss'))", {'TS': dtime})