Analitycs

пятница, 23 сентября 2011 г.

Python mktime/strptime - TypeError: expected string or buffer

Иногда апдейты повергают меня в транс - недавно ловил баг с PHP+cURL, теперь отличился Python ;-/

Traceback (most recent call last):
  File "test.py", line 22, in 
    s = strptime(row['change_time'], TIME_FORMAT)  File "/usr/lib/python2.6/_strptime.py", line 454, in _strptime_time
    return _strptime(data_string, format)[0]
  File "/usr/lib/python2.6/_strptime.py", line 322, in _strptime
    found = format_regex.match(data_string)
TypeError: expected string or buffer

Описание

Лезем в код - получаем какой-то набор данных из MySQL через питоновский fetchall, затем преобразуем поле со временем и начинаем с ним танцевать.

Перестала работать конструкция
 
    s = strptime(row['change_time'], TIME_FORMAT)
    last_change_time = mktime(s)

После курения манов по времени в Python выясняется, что нужно в mktime отдавать 9 численный tuple


    s = row['change_time'].timetuple()
    last_change_time = mktime(s)

Вот и верь после этого людям... обновляй после этого пакеты...

3 комментария:

  1. Тююю, четай:
    http://www.liveinternet.ru/users/sanjek65/post100865399/
    тут с ынтерпрайзом такие шляпы иногда приключаются, а ты про какой-то пейтон :D

    ОтветитьУдалить
  2. Хех, ну RedHat семейство этим отличается. Вон у CentOS постоянно sbin отваливается ;-)

    ОтветитьУдалить
  3. Центос последнее время вообще слоупочит, шестёрку RHEL еле-еле зарелизили, я из-за этого на рабочих серваках на скентифик перешёл

    ОтветитьУдалить