从cx_oracle游标检索时区识别日期时间对象的正确方法是什么?

| cx_oracle为
TIMESTAMP
TIMESTAMP WITH TIME ZONE
类型的列返回
datetime
实例,但是这些datetime实例不支持时区。 例如:
SELECT column_name, data_type FROM ALL_TAB_COLUMNS WHERE table_name = \'mytable\';

column_name data_type
----------- ---------------------------
MYCOL       TIMESTAMP(6) WITH TIME ZONE
如您所见,MYCOL是一个时区识别的TIMESTAMP。我希望以下代码返回包含tzinfo数据的Python datetime对象。然而:
>>> cxoracle_cursor.execute(\"select mycol from mytable\")
>>> row = cx_oracle_cursor.fetchone()
>>> row[\'mycol\']
datetime.datetime(2011, 6, 15, 8, 30)
该datetime对象不支持时区,因此我无法在应用程序中可靠地使用该日期。 将此列作为可识别时区的datetime对象检索的最佳方法是什么?     
已邀请:
在这里,我看到以下内容:对于TIMESTAMP WITH TIME ZONE数据,datetime值始终为UTC,因此无需进行转换。 因此,如果您不知道“ 0”对象时区,则表示它是UTC。因此,您可以执行以下操作:
dt = pytz.utc.localize(row[\'mycol\'])
或尝试使用功能
SYS_EXTRACT_UTC
(从具有时区偏移量的日期时间中提取UTC),然后再使用
pytz.utc.localize
。     

要回复问题请先登录注册