получение полей даты от oracle в правильном формате с использованием Python и cx-oracle

Я извлекаю нагрузку данных из одной базы данных оракула, а затем вставляю ее в другую не связанную базу данных, которая является структурно одинаковой.

Я делаю это, делая:

select * from xxx where id = parameter 

а также

 Select COLUMN_NAME from user_tab_columns where table_name=xxx 

затем zip помещает их в словарь как table_name: данные для сборки вставки из

Проблема в том, что оно возвращает поля даты как datetime.datetime (99, 12, 31, 0, 0). Мне это нужно 31-dec-2999. Как я могу заставить его вернуть его так или мне нужно создать регулярное выражение для этого?

Я новичок во всем этом, поэтому, если мой метод кажется смешным, не стесняйтесь говорить об этом и предлагайте лучший метод

Большое спасибо Адаму

cx_Oracle базы данных cx_Oracle предоставляет вам объекты datetime.datetime() . Используйте методы для этих объектов для их форматирования в строку, если требуется другой вывод.

Метод datetime.strftime() лучше всего подходит для ваших целей:

 dtobject.strftime('%d-%b-%Y') 

Демо-версия:

 >>> import datetime >>> dtobject = datetime.datetime(2999, 12, 31, 0, 0) >>> dtobject.strftime('%d-%b-%Y') '31-Dec-2999' 

Если, однако, Oracle действительно возвращает объекты с годом, установленным в 99 (не 2999 ), вам необходимо восстановить данные:

 if dtobject.year < 100: dtobject = dtobject.replace(year=dtobject.year + 2900) 

Вы можете использовать strftime .

Например:

 >>> import datetime >>> print datetime.datetime.now().strftime("%Y-%m-%d %H:%M") 2013-08-13 13:10 

В вашем случае это может сделать это:

 strftime("%d-%b-%Y") 

где:

 %b locale's abbreviated month name (eg, Jan) %d day of month (eg, 01) %Y year