Использование postgres "время с часовым поясом" с sqlalchemy - PullRequest
0 голосов
/ 21 февраля 2019

Я использую postgres и sqlalchemy с python 3.7

У меня есть столбец с типом "time with timezone" и пытаюсь вставить новую строку.

TAB = Table("tab", METADATA,
           # ...

           Column('created', DateTime(timezone=True), default=datetime.now)
           )

Теперь я пытаюсьвставить новую строку.Я получил это сообщение:

(psycopg2.ProgrammingError) column "created" is of type time with time zone but expression is of type timestamp without time zone

Кто-нибудь знает, что мне делать?

Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2019

Основная проблема заключается в том, что вы сопоставляете столбец SQLALchemy DateTime со столбцом PostgreSQL time with time zone.Вместо этого вам следует заглянуть в Time.

Если вы намеревались использовать столбец PostgreSQL timestamp with time zone, то вам все равно нужно переосмыслить настройки по умолчанию, поскольку datetime.now не знает о часовом поясе.Есть несколько способов справиться с этим, но самый простой - использовать взамен func.now() SQLAlchemy.Например:

from sqlalchemy import Column, DateTime, Integer, MetaData, Table
from sqlalchemy.sql import func

metadata = MetaData()

example = Table('example', metadata,
    Column('id', Integer, primary_key=True),
    Column('date', DateTime(timezone=True), default=func.now())
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...