Как получить значение DateTimeField в peewee - PullRequest
0 голосов
/ 19 мая 2018
class Test(Model):
    time = DateTimeField()

# ...
row = Test.select()[0]
test.time

Возвращает строку, которая выглядит следующим образом: 2017-01-23 01:01:39+01:00.Как я могу получить его как объект datetime?Нужно ли анализировать его вручную?

Также мне было бы интересно, есть ли какая-либо документация по использованию DateTimeField.В официальной документации ничего нет.

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вы используете SQLite?Если это так, SQLite не имеет выделенного типа datetime, поэтому datetime хранится в виде строк в БД.Что peewee сделает, это распознает определенные форматы даты и времени, выходящие из БД, и преобразует их в объекты даты и времени.Что вам нужно сделать, это убедиться, что:

  1. Когда вы создаете / сохраняете свой объект, вы назначаете datetime объект для поля.
  2. При чтении досуществующие данные, что данные представлены в распознанном формате.

Поддерживаемые форматом peewee для поля даты и времени:

  • ГГГГ-мм-дд чч: мм: сс.фффффф
  • гггг-мм-дд чч: мм: сс
  • гггг-мм-дд

похоже, у вас есть зонаИнформация.Я бы посоветовал перейти на UTC и сбросить информацию о зоне.Это должно это исправить.

0 голосов
/ 19 мая 2018

Вы пытались добавить значение по умолчанию, как это?

time = DateTimeField(default=datetime.datetime.now())

Или при добавлении записи добавьте ее как объект datetime.datetime напрямую:

test = Test(....., time=datetime.datetime.strptime("2018-3-15", '%Y-%m-%d'))

Во втором случае вам не нужно ничего указывать в определении класса ...

...