objtyping icon indicating copy to clipboard operation
objtyping copied to clipboard

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

Open rufeng-h opened this issue 3 years ago • 1 comments

序列化反序列化很好用的一个库,不过本人最近在用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类型,但实际值为基本类型

rufeng-h avatar Apr 14 '23 09:04 rufeng-h

确实有这个问题,近期修复一下

rufeng-h @.***> 于2023年4月14日周五 17:33写道:

序列化反序列化很好用的一个库,不过本人最近在用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类型,但实际值为基本类型

— Reply to this email directly, view it on GitHub https://github.com/songofhawk/objtyping/issues/1, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAV2PWEPD52QWNXJZTFMG6LXBEKXLANCNFSM6AAAAAAW6FZWYI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

songofhawk avatar Apr 17 '23 03:04 songofhawk