Как вставить значение в столбец SQLAlchemy TIMESTAMP - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь установить значение для столбца метки времени с помощью SQLAlchemy, но у меня возникает следующая ошибка:

column "timestamp" is of type timestamp without time zone but expression is of type numeric

Моя таблица выглядит следующим образом:

class SomeTable(db.Model):
    timestamp = Column(TIMESTAMP)

Попытка вставки выглядит следующим образом:

SomeTable(timestamp=time.time())

Когда я использую datetime.now () вместо time.time (), запись вставляется в таблицу, но когда я выбираю ее из базы данных, она имеет следующий формат:

2019-04-02 11:44:24.801046

Похоже, что поле TIMESTAMP не хранит формат отметки времени.

Это обычное поведение postgres?Или я что-то упустил?

1 Ответ

1 голос
/ 02 апреля 2019

Я думаю, что это хорошо, потому что следующее правильно:

Column('timestamp', TIMESTAMP(timezone=False), nullable=False, default=datetime.now())

, поэтому по умолчанию у вас есть datetime.now(), речь идет о представлении

datetime.now() даст вам '2019-04-02 14:21:33.715782

datetime.now().isoformat() даст вам '2019-04-02T14:31:09.071147'

Проверьте это с помощью: http://www.sqlfiddle.com/#!15/d0c6a/8

Если вы откомментируете третью вставку, вы получите точно такое же исключение, как и ваше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...