为了账号安全,请及时绑定邮箱和手机立即绑定

使用Python的Win32 ODBC模块检索Oracle时间戳

使用Python的Win32 ODBC模块检索Oracle时间戳

慕后森 2021-03-21 16:21:01
给定使用以下命令创建的Oracle表:CREATE TABLE Log(WhenAdded TIMESTAMP(6) WITH TIME ZONE);使用来自Win32扩展(来自win32all软件包)的Python ODBC模块,我尝试了以下方法:import dbi, odbcconnection = odbc.odbc("Driver=Oracle in OraHome92;Dbq=SERVER;Uid=USER;Pwd=PASSWD")cursor = connection.cursor()cursor.execute("SELECT WhenAdded FROM Log")results = cursor.fetchall()运行此命令时,将得到以下信息:Traceback (most recent call last):...    results = cursor.fetchall()dbi.operation-error: [Oracle][ODBC][Ora]ORA-00932: inconsistent datatypes: expected %s got %s in FETCH我尝试过的其他数据类型(VARCHAR2,BLOB)不会导致此问题。有没有一种获取时间戳的方法?
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我相信这是Oracle ODBC驱动程序中的错误。基本上,Oracle ODBC驱动程序不支持TIMESTAMP WITH (LOCAL) TIME ZONE数据类型,仅支持TIMESTAMP数据类型。正如您所发现的,实际上一种解决方法是使用该TO_CHAR方法。

在您的示例中,您实际上并没有在阅读时区信息。如果您可以控制表格,则可以将其转换为直列TIMESTAMP。如果你没有在桌子上的控制,另一种解决方案可能是创建一种观点认为,从转换TIMESTAMP WITH TIME ZONETIMESTAMP通过串-对不起,我不知道是否有直接从转换的方式TIMESTAMP WITH TIME ZONETIMESTAMP


查看完整回答
反对 回复 2021-03-22
  • 2 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号