Как в SQLAlchemy 2 указать часовой пояс Москвы для времени записи в базе данных?

Как изменить настройки Алхимии для записи времени в формате Московского времени вместо UTC?
  • 17 августа 2024 г. 16:43
Ответы на вопрос 2
Для указания часового пояса Москвы при записи времени в базу данных с использованием SQLAlchemy необходимо использовать модуль `pytz` для работы с часовыми поясами. Ниже приведен пример кода, демонстрирующий изменение настроек SQLAlchemy для записи времени в формате Московского времени вместо UTC:

```python
from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import datetime
import pytz

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    created_at = Column(DateTime)

engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)

# Указываем часовой пояс Москвы
timezone = pytz.timezone('Europe/Moscow')
current_time_msk = datetime.now(timezone)

# Создаем нового пользователя и записываем время создания в формате Московского времени
user = User(name='Alice', created_at=current_time_msk)

session = Session()
session.add(user)
session.commit()

session.close()
```

В данном примере при создании нового пользователя время создания (`created_at`) записывается в формате Московского времени. Для этого используется объект `pytz.timezone('Europe/Moscow')`, который определяет часовой пояс Москвы.
Где-то прочитал, что Postgre пишет только в UTC,
нет, postgresql умеет таймзоны

но в Django мне удавалось перенастроить его на МСК
при чем тут Django? да, там на уровне settings можно указать кучу вариантов работы с datetime, это это вообще никак ни к SQLAlchemy, ни к postgresql не относится

Как можно перенастроить Алхимию на МСК?
явно передавать datetime c timezone MSK
Похожие вопросы