agronholm / agronholm/sqlacodegen

Dataclass Mapping changed in sqalchemy 2.0

未关闭
#248 12 条评论 0 个 reaction 已指派 1 人 已被 @sheinbergon 认领 在 GitHub 查看
主要语言
Python
星标
2.4k
派生
284
平均合并
2 天 1 小时
30 天内合并 PR
1

描述

Refer: https://docs.sqlalchemy.org/en/20/orm/dataclasses.html#orm-declarative-native-dataclasses

Current documented dataclass style is:

```python
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from sqlalchemy.orm import MappedAsDataclass

class Base(MappedAsDataclass, DeclarativeBase):
"""subclasses will be converted to dataclasses"""

class User(Base):
__tablename__ = "user_account"

id: Mapped[int] = mapped_column(init=False, primary_key=True)
name: Mapped[str]
```

or at least:

```python
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from sqlalchemy.orm import registry

reg = registry()

@reg.mapped_as_dataclass
class User:
__tablename__ = "user_account"

id: Mapped[int] = mapped_column(init=False, primary_key=True)
name: Mapped[str]
```

Columns type should be `Mapped[int]` not `int` which is different with current sqlacodegen and the new `mapped_column` is much more readable.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。