python cx_Oracle无法更新空时间戳值

2024-10-03 06:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python代码中的无值更新表中的TIMESTAMP列。在

当使用带空值的insert语句时,它工作得很好。在

但是当使用update语句时,它不起作用!!在

下面是测试代码,供您理解。在

(我更新'None'值的原因是,新值来自另一个数据库,我想用新值更新该值,有些值为空。)

:1是python代码中的“20160418154000”类型字符串 但当它是'None'值时,就会引发异常。在

INSERT INTO TEST_TABLE (ARR_TIME) VALUES(TO_TIMESTAMP(:1, 'YYYYMMDDHH24MISS'))

效果很好!!在

^{pr2}$

它不起作用!!在

error message : ORA-00932: inconsistent datatypes: expected - got NUMBER

我想cx峎Oracle会将python中的None值识别为number(0??) 并且不能转换为'YYYYMMDDHH24MISS'字符串类型。在

有没有办法更新TIMESTAMP列中的空值?在


Tags: 字符串代码none类型update原因语句timestamp
1条回答
网友
1楼 · 发布于 2024-10-03 06:26:47

是的,有。除非您另有指定,否则空值将作为类型字符串绑定。但是,您可以使用以下代码覆盖它:

cursor.setinputsizes(cx_Oracle.TIMESTAMP)

请参阅此处获取文档:

http://cx-oracle.readthedocs.org/en/latest/cursor.html#Cursor.setinputsizes

注意:您也可以使用以下代码来解决此问题:

^{pr2}$

不需要使用将数据转换为\u timestamp(),因为cxu Oracle可以直接绑定时间戳值(使用日期时间。日期时间)如果你没有绑定,甲骨文会为你隐式转换。在

相关问题 更多 >