agronholm / agronholm/sqlacodegen

Dataclass Mapping changed in sqalchemy 2.0

Offen
#248 12 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @sheinbergon Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
2.4k
Forks
284
Ø Merge
2 T. 1 Std.
Gemergte PRs (30 T.)
1

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.