5.Marshmallow-SQLAlchemy轻量级序列化和反序列化包

Marshmallow,中文译作:棉花糖。是一个轻量级的数据格式转换的模块,也叫序列化和反序列化模块,常用于将复杂的orm模型对象与python原生数据类型之间相互转换。marshmallow提供了丰富的api功能

基本使用

import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker, relationship, backref

engine = sa.create_engine("sqlite:///:memory:")
session = scoped_session(sessionmaker(bind=engine))
Base = declarative_base()


class Author(Base):
    __tablename__ = "authors"
    id = sa.Column(sa.Integer, primary_key=True)
    name = sa.Column(sa.String, nullable=False)

    def __repr__(self):
        return "<Author(name={self.name!r})>".format(self=self)


class Book(Base):
    __tablename__ = "books"
    id = sa.Column(sa.Integer, primary_key=True)
    title = sa.Column(sa.String)
    author_id = sa.Column(sa.Integer, sa.ForeignKey("authors.id"))
    author = relationship("Author", backref=backref("books"))


Base.metadata.create_all(engine)
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema


class AuthorSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = Author
        include_relationships = True
        load_instance = True


class BookSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = Book
        include_fk = True
        load_instance = True
author = Author(name="Chuck Paluhniuk")
author_schema = AuthorSchema()
book = Book(title="Fight Club", author=author)
session.add(author)
session.add(book)
session.commit()

dump_data = author_schema.dump(author)
print(dump_data)
# {'id': 1, 'name': 'Chuck Paluhniuk', 'books': [1]}

load_data = author_schema.load(dump_data, session=session)
print(load_data)
# <Author(name='Chuck Paluhniuk')>

2.模型构造器(ModelSchema)

class UserSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = 模型类名    # table = models.Album.__table__
        include_relationships = True  # 输出模型对象时同时对外键,是否也一并进行处理
        include_fk = True # 序序列阶段是否也一并返回主键
        load_instance = True  # 反序列化阶段时,直接返回模型对象
        sql_session = db.session # 数据库连接会话对象
        # fields= ["id","name"] # 启动的字段列表
        exclude = ["id","name"] # 排除字段列表

注意:flask_marshmallow在0.12.0版本以后已经移除了ModelSchema和TableSchema这两个模型构造器类,官方转而推荐了使用SQLAlchemyAutoSchema和SQLAlchemySchema这2个类,前后两者用法类似

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
安卓6.0(也称为安卓 Marshmallow)是谷歌推出的一代安卓操作系统版本。卡刷是指可以通过刷机的方式将新的操作系统版本升级或者降级至设备上。在刷机过程中,用户需要将卡刷文件传输至设备,并通过特定的刷机工具进行刷机操作。 在安卓6.0系统中,卡刷是一种常见的刷机方式。用户可以通过下载相应的卡刷文件,将其传输至设备的存储空间中。然后,用户需要进入设备的刷机模式,并通过特定的刷机工具选择并刷入卡刷文件,完成操作系统版本的刷机。 卡刷常用于解决设备上的软件问题或者提供设备更好的稳定性性能。通过刷入新的卡刷文件,用户可以获得最新的操作系统更新和修复。同时,卡刷也可以用于提供一些第三方ROM固件,这些固件通常会增加新的功能或者改善整体系统性能。 要安全刷入卡刷,用户需要注意以下几点: 1. 确保卡刷文件的来源可靠,最好从官方或者信任的渠道下载。 2. 掌握正确的刷机教程,按照教程进行刷机操作,避免不正确的操作导致设备损坏。 3. 在刷机前备份设备中的重要数据,以防刷机过程中数据丢失。 4. 注意设备的电量,刷机过程中设备应保持足够电量,以免因电池耗尽导致刷机失败。 5. 如果不熟悉刷机操作,建议寻求专业人士的帮助或者参考相关论坛和社区中的经验分享。 总之,安卓6.0的卡刷是一种将新的安卓操作系统版本或者第三方ROM固件刷入设备的方式。通过谨慎操作并注意相关事项,用户可以安全地进行刷机操作,享受到更好的系统性能和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce-li__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值