Skip to content

sqlalchemy2.x类的属性反序列化会报错 #1

@rufeng-h

Description

@rufeng-h

序列化反序列化很好用的一个库,不过本人最近在用sqlalchemy2.x,类的属性反序列化会报错

from datetime import datetime

from objtyping import objtyping
from sqlalchemy import Integer, String, VARCHAR, DateTime
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped, mapped_column


class Base(DeclarativeBase):
    pass


class Area(Base):
    __tablename__ = 'area'
    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True, nullable=False)
    code: Mapped[str] = mapped_column(String(12), nullable=False)
    name: Mapped[str] = mapped_column(VARCHAR(15), nullable=False)
    level: Mapped[int] = mapped_column(Integer, nullable=False)
    pcode: Mapped[str] = mapped_column(String(12), nullable=False)
    create_time: Mapped[datetime] = mapped_column(DateTime, nullable=False)
    update_time: Mapped[datetime] = mapped_column(DateTime, onupdate=datetime.now)

    def __str__(self):
        return self.name

    __repr__ = __str__


if __name__ == '__main__':
    area = Area(id=1, code='213123131', name='里斯', level=1, pcode='1212313131')
    s = objtyping.to_primitive(area)
    print(s)
    print(objtyping.from_primitive(s, Area))

会将数据库字段判断为sqlalchemy.orm.MappedColumn类型,但实际值为基本类型

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions