Подтвердить что ты не робот

Datetime в определении базы данных с использованием sqlalchemy

Должен ли я использовать() с datetime.now в определении таблиц? Какой код неправильный 1 или 2?

1

Base = declarative_base()
class T(Base):
    __tablename__ = 't'

    created = Column(DateTime, default=datetime.now)

2:

Base = declarative_base()
class T(Base):
    __tablename__ = 't'

    created = Column(DateTime, default=datetime.now())
4b9b3361

Ответ 1

Вам нужен первый случай. То, что вы делаете, говорит SqlAlchemy, как всякий раз, когда вставлена ​​строка, запустите эту функцию (вызываемую), чтобы получить значение по умолчанию. Это может быть любая вызываемая функция или строковое значение.

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

Если вы используете второе значение, вы обнаружите, что все значения по умолчанию имеют одно и то же время. Это будет значение, которое произошло при первом обращении кода.

http://www.sqlalchemy.org/docs/core/schema.html?highlight=default#sqlalchemy.schema.ColumnDefault

This could correspond to a constant, a callable function, or a SQL clause.