Как работать с объектом datetime.datetime, возвращенным из запроса Oracle в Python - PullRequest
2 голосов
/ 26 мая 2011

У меня запрос к базе данных Oracle с использованием cx_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, но я не могу понять, как получить доступ к отдельным элементам из возвращенного списка. Я получаю различные ошибки о том, что это кортеж, список и т. Д., В зависимости от того, какие попытки я делаю. Я посмотрел примеры в Google и могу заставить их работать нормально - что мне нужно сделать по-другому, чтобы успешно получить доступ к времени / дате в этом типе даты?

Спасибо! Jack

Ответы [ 2 ]

2 голосов
/ 26 мая 2011
x = (datetime.datetime(2010, 11, 25, 14, 30, 47),)

- это кортеж.

dt = x[0]

- это первый элемент, который является вашей датой и временем.

dt.year

- это год даты и времени. и т.д.

0 голосов
/ 26 мая 2011

Возвращаемое значение, (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...