Как получить словарь столбцов и значений в модели SQLAlchemy?

У меня есть следующая таблица:

Base = declarative_base()
metadata = Base.metadata

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    username = Column(String(255))
    email = Column(String(255))

Можно ли получить словарь, который для пустой записи вернет что-то вроде:

{'id': None, 'username': None, 'email': None}

И если я это сделаю:

user = User()
user.username = "testuser"
user.email = "[email protected]"

Я хочу, чтобы получить словарь с соответствующими значениями. Конечно, если я сохраню запись, я ожидаю, что там будет и id.

Ответ 2

В большинстве сценариев имя столбца подходит для них. Но, возможно, вы пишете код следующим образом:

class UserModel(BaseModel):
    user_id = Column("user_id", INT, primary_key=True)
    email = Column("user_email", STRING)

column.name "user_email", а имя поля - "электронная почта", column.name не может работать как раньше.

Существует еще один трюк с использованием метакласса Python, пример кода:

sqlalchemy_base_model.py