Похоже, что решением этой проблемы является не установка по умолчанию или установка datetime.datetime.utcnow
по умолчанию, а затем присвоение его значения по умолчанию для класса __init__
method
class Example(Base):
__tablename__ = 'example'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False, unique=True)
date = Column(DateTime)
def __init__(self, name, date=None):
self.name = name
self.date = date if date else datetime.datetime.utcnow() + datetime.timedelta(days=30)
Это единственный способ, который работает
Никогда не используйте:
date = Column(DateTime, default=(datetime.datetime.utcnow() + datetime.timedelta(days=30)))
Вы не можете просто передать вызываемый аргумент по умолчанию, вам нужно передать саму функцию, иначе она запустится в первый раз и будет заменена результатом на первый созданный вами объект, что означает каждый объект у создания будет та же дата, что и у первого объекта.