Flask 防止棉花糖查询数据库

Flask 防止棉花糖查询数据库,flask,sqlalchemy,flask-sqlalchemy,flask-marshmallow,marshmallow-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,Flask Marshmallow,Marshmallow Sqlalchemy,我想完全阻止marshmallow查询数据库 下面是解释性代码片段 from flask_sqlalchemy import SQLAlchemy from marshmallow_sqlalchemy import SQLAlchemyAutoSchema from flask_restful import Resource db = SQLAlchemy() class FooModel(db.Model): id = db.Column(db.Integer, primary_

我想完全阻止marshmallow查询数据库

下面是解释性代码片段

from flask_sqlalchemy import SQLAlchemy
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from flask_restful import Resource

db = SQLAlchemy()

class FooModel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(256))
    picture = db.Column(db.String(256))
    about = db.Column(db.String(256))

class FooSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = FooModel

class FooRessource(Resource):
    def get(self):
        foo = FooModel(name="Mi", picture="pic", about="ab")
        db.session.add(foo)
        db.session.commit()

        created = FooModel.query.options(db.load_only("name")).first()
        created_data = FooSchema().dump(created)
        return {'data': created_data}
我已经用
SQLAlchemy\u ECHO=True
打开了SQLAlchemy日志。现在可以从日志中看到这一点

INFO     sqlalchemy.engine.Engine:log.py:117 INSERT INTO foo_model (name, picture, about) VALUES (%(name)s, %(picture)s, %(about)s) RETURNING foo
_model.id
INFO     sqlalchemy.engine.Engine:log.py:117 [generated in 0.00040s] {'name': 'Mi', 'picture': 'pic', 'about': 'ab'}
INFO     sqlalchemy.engine.Engine:log.py:117 COMMIT
INFO     sqlalchemy.engine.Engine:log.py:117 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:log.py:117 SELECT foo_model.id AS foo_model_id, foo_model.name AS foo_model_name
FROM foo_model
 LIMIT %(param_1)s
INFO     sqlalchemy.engine.Engine:log.py:117 [generated in 0.00024s] {'param_1': 1}
INFO     sqlalchemy.engine.Engine:log.py:117 SELECT foo_model.picture AS foo_model_picture, foo_model.about AS foo_model_about
FROM foo_model
WHERE foo_model.id = %(pk_1)s
INFO     sqlalchemy.engine.Engine:log.py:117 [generated in 0.00026s] {'pk_1': 1}
如您所见,有两个db
select
查询,一个来自我的资源,另一个来自棉花糖

当我更新我的模式实例时,如下面所示
created\u data=FooSchema(only=“name”,).dump(created)
Marshmallow中的查询将消失,您可以在下面看到我想要的

INFO     sqlalchemy.engine.Engine:log.py:117 INSERT INTO foo_model (name, picture, about) VALUES (%(name)s, %(picture)s, %(about)s) RETURNING foo
_model.id
INFO     sqlalchemy.engine.Engine:log.py:117 [generated in 0.00024s] {'name': 'Mi', 'picture': 'pic', 'about': 'ab'}
INFO     sqlalchemy.engine.Engine:log.py:117 COMMIT
INFO     sqlalchemy.engine.Engine:log.py:117 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:log.py:117 SELECT foo_model.id AS foo_model_id, foo_model.name AS foo_model_name
FROM foo_model
 LIMIT %(param_1)s
INFO     sqlalchemy.engine.Engine:log.py:117 [generated in 0.00021s] {'param_1': 1}
我想知道是否有一种优雅的方法可以告诉marshmallow不要查询数据库,而是对实例上的可用数据进行反序列化。我正在处理一个大型项目,这现在是个问题,因为marshmallow可以查询许多关系中不需要的数据,导致请求速度非常慢

如有任何建议、文件参考或建议,将不胜感激