У меня есть модель с такими полями:
class PayRequest(Base):
__tablename__ = 'request'
created: Mapped[DateTime] = mapped_column(DateTime(timezone=True),
default=get_moscow_time())
updated: Mapped[DateTime] = mapped_column(DateTime(timezone=True),
default=get_moscow_time(),
onupdate=get_moscow_time())
Есть функция, которая возвращает московское время:
from datetime import datetime as dttm
import pytz
def get_moscow_time():
moscow = pytz.timezone('Europe/Moscow')
return dttm.now(moscow)
Если записать такой объект в базу, то время записывается странным образом:
async def orm_add_pay_request(
session: AsyncSession,
bank: str,
amount: float,
card_id: int,
user_id: int):
pay_request = PayRequest(
bank=bank,
amount=amount,
card_id=card_id,
user_id=user_id
)
session.add(pay_request)
await session.commit()
return pay_request
payment = orm_add_pay_request(session, 'test', 1, 2 ,3)
print(payment.created, payment.updated)
2024-07-19 03:29:18.520629+00:00 2024-07-19 06:29:18.520692+03:00
Я также вношу пару тестовых изменений.
Поле created выводится по utc, а updated по Москве.
В чем может быть проблема?