将Python datetime插入DATE类型的Oracle列

Alo*_*wal 1 python oracle cx-oracle date

我试图将python datetime对象存储到date类型的ORACLE列.

到目前为止,我用过,

rpt_time = time.strftime('%Y-%m-%d %H:%M:%S') or
rpt_time = str(datetime.datetime.now())
Run Code Online (Sandbox Code Playgroud)

但所有人都在给ORA-01843:不是有效的montn

我真的很困惑如何插入ORACLE日期类型python datetime对象

Pio*_*ost 7

cx_Oracle支持传递类的对象datetime.datetime.因为当你已经拥有这个类的对象时(例如在调用时datetime.datetime.now()),你不应该尝试格式化它并作为字符串传递,而是直接传递它.这样可以防止因日期和/或时间格式错误而导致的所有错误.

例:

cursor.execute("INSERT INTO SomeTable VALUES(:now)", {'now': datetime.datetime.now()})
Run Code Online (Sandbox Code Playgroud)

请注意,如果要防止截断小数部分秒,则必须执行其他步骤.有关详细信息,请参阅PrzemysławPiotrowski的掌握Oracle + Python,第2部分:使用时间和日期的文章.


Jac*_*des 5

据我的搜索显示,ORACLE在日期上可能会很挑剔,所以这可能是您需要做的。

首先,检查日期格式。例如,如果您有类似2010/01/26:11:00:00AM的内容,则可能需要对游标执行以下操作:

insert into x
values(99, to_date('2010/01/26:11:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
Run Code Online (Sandbox Code Playgroud)