如何在Python中处理Oracle查询返回的datetime.datetime对象

2 投票
2 回答
2085 浏览
提问于 2025-04-16 18:24

我在用cx_Oracle对一个Oracle数据库进行查询。查询的结果是这样的:

(datetime.datetime(2010, 11, 25, 14, 30, 47),)

我通过下面的代码得到了这个结果:

#!/usr/bin/python
import obi
from datetime import datetime

conn = obi.connect_obi()
query = obi.run_query(conn, "SELECT column FROM table_name")

for i in query:
    print i

我想做的是从结果中提取出时间、日期等信息。

我尝试过使用各种datetime的方法,但我不知道怎么从返回的列表中访问单独的元素。根据我尝试的不同方式,我总是遇到各种错误,比如说它是一个元组、一个列表等等。我在谷歌上看过一些例子,能让那些例子正常工作——我需要做些什么不同的事情才能成功访问这个数据类型中的时间和日期呢?

谢谢!

杰克

2 个回答

0

返回的值 (datetime.datetime(2010, 11, 25, 14, 30, 47),) 实际上是一个元组。注意它是用括号括起来的,并且(最重要的是)在日期后面有一个逗号。就像两个表达式之间的逗号会把它们变成一个成对的元组(比如 1, 2),在某个表达式后面的逗号会把这个值变成一个只有一个元素的元组。想了解更多,可以查看Python教程的这一部分(更具体地说,可以看这里)。

举个例子:

>>> (datetime.datetime(2010, 11, 25, 14, 30, 47),)
(datetime.datetime(2010, 11, 25, 14, 30, 47),)
>>> t = (datetime.datetime(2010, 11, 25, 14, 30, 47),)

要获取日期,只需取元组的第一个元素即可。

>>> date = t[0]
>>> date
datetime.datetime(2010, 11, 25, 14, 30, 47)
>>> date.year
2010
>>> date.month
11
2
x = (datetime.datetime(2010, 11, 25, 14, 30, 47),)

这是一个元组。

dt = x[0]

这是第一个元素,它是你的日期时间。

dt.year

这是日期时间中的年份。等等。

撰写回答