标签: flask-marshmallow

烧瓶棉花糖属性错误:列表对象没有属性“数据”

我有一个本地 SQLlite 数据库,我通过下面的代码连接了它:'''

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, Integer, String, Float
import os
from flask_marshmallow import Marshmallow, Schema

app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'planets.db')
db = SQLAlchemy(app)
ma = Marshmallow(app)


@app.cli.command('db_create')
def db_create():
    db.create_all()
    print('Database created!')


@app.cli.command('db_drop')
def db_drop():
    db.drop_all()
    print('Database dropped!')

@app.cli.command('db_seed')
def db_seed():
    mercury = Planet(planet_name='Mercury',
                     planet_type='Class D',
                     home_star='Sol',
                     mass=2.258e23,
                     radius=1516,
                     distance=35.98e6)

    venus = Planet(planet_name='Venus',
                         planet_type='Class K',
                         home_star='Sol',
                         mass=4.867e24,
                         radius=3760,
                         distance=67.24e6)

    earth = …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy python-3.7 flask-marshmallow

8
推荐指数
3
解决办法
3214
查看次数

如何使用 Flask-Marshmallow 处理文件上传验证?

我工作Flask-Marshmallow了验证request,并response在架构Flask app。我能为做简单的验证request.formrequest.args当有简单的领域,如IntStrFloat等。

我有一个案例,我需要使用表单字段上传文件 - file_field。它应该包含文件内容。

如何验证此字段是否存在以及文件格式是什么等。

是否有任何这样的领域Marshmallow,我可以使用喜欢fields.Int()fields.Str()

我已经浏览了此处的文档但没有找到任何此类字段。

python forms flask flask-wtforms flask-marshmallow

5
推荐指数
1
解决办法
1320
查看次数

使用 Marshmallow 进行关系序列化非常慢

我的数据库中有以下示例表,我通过 Flask_SQLAlchemy 管理该表。

class Employee(db.Model):
    __tablename__ = 'employee'
    id = db.Column(db.Integer, primary_key=True)
    salutation = db.Column(db.String(250), nullable=False)
    first_name = db.Column(db.String(250), nullable=False)
    last_name = db.Column(db.String(250), nullable=False)
    
    employments = db.relationship('Employment', foreign_keys='Employment.employee_id', backref="employee", lazy=True)
Run Code Online (Sandbox Code Playgroud)

我的 Flask 架构如下所示:

class EmployeeSchema(mm.SQLAlchemyAutoSchema):
    class Meta:
        model = DB_employee.Employee
        include_fk = True
        include_relationships = True
Run Code Online (Sandbox Code Playgroud)

以下是我的员工 GET 路由:

class EmployeesListAPI(Resource):
    def __init__(self):
        self.reqparse_get = reqparse.RequestParser()
        self.reqparse_get.add_argument('employee_id', type=int, action='append', required=False, location='args')
        self.reqparse_get.add_argument('salutation', type=str, action='append', required=False, location='args')
        self.reqparse_get.add_argument('first_name', type=str, required=False, location='args')
        self.reqparse_get.add_argument('last_name', type=str, required=False, location='args')
        
        super(EmployeesListAPI, self).__init__()

    def get(self):
        get_args = …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy flask-sqlalchemy flask-restful marshmallow flask-marshmallow

5
推荐指数
0
解决办法
702
查看次数

如何验证棉花糖中特定类型的元素列表?

我在 Flask 中有一个 POST 端点,它接受一个 json 数据,其中包含一个键 -collections它有一个列表作为值,而该值又包含包含特定键的字典列表。

我正在尝试验证,request.json但找不到合适的方法。

这是棉花糖模式的代码:

class RowSchema(Schema):
    nationalCustomerId = fields.Int(required=True)
    storeId = fields.Int(required=True)
    categoryId = fields.Int(required=True)
    deliveryDate = fields.Date(required=True, format="%Y-%m-%d")

class RequestSchema(Schema):
    combinations = fields.List(RowSchema)
Run Code Online (Sandbox Code Playgroud)

我试图用request.json来验证RequestSchema

我发送的内容request.json如下:

{
    "combinations": [
            {
                "nationalCustomerId": 1,
                "storeId": 1,
                "categoryId": 1,
                "deliveryDate": "2020-01-20"
            }
        ]
}
Run Code Online (Sandbox Code Playgroud)

我哪里出错了?

这是我收到的错误:

ValueError:列表元素必须是 marshmallow.base.FieldABC 的子类或实例。

post flask flask-restful marshmallow flask-marshmallow

3
推荐指数
1
解决办法
2750
查看次数

sqlalchemy.orm.exc.UnmappedInstanceError:类'builtins.dict'未映射

我正在尝试使用 SQLAlchemy 和 Marshmallow 将新用户插入到数据库中。该user参数是从 API 端点接收的。一切正常,直到我到达create函数中的这一行:

db.session.add(new_user)
Run Code Online (Sandbox Code Playgroud)

此时new_user变量的值是:

{'password': 'string', 'email': 'fave@string', 'username': 'string'}
Run Code Online (Sandbox Code Playgroud)

功能:

def create(user):
    uname = user.get('username')
    email = user.get('email')
    password = user.get ('password')

    existing_username = User.query.filter(User.username == uname).one_or_none()

    if existing_username is None:

        schema = UserSchema()
        new_user = schema.load(user, session=db.session)

        db.session.add(new_user) <- It fails here
        db.session.commit()

        return schema.dump(new_user), 201
Run Code Online (Sandbox Code Playgroud)

楷模:

    class User (db.Model):
        id = db.Column(db.Integer, primary_key=True)
        username = db.Column(db.String(20), unique=True, nullable=False)
        email = db.Column(db.String(120), unique=True, nullable=False)
        profile_picture = db.Column(db.String(20), …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy flask-marshmallow marshmallow-sqlalchemy

2
推荐指数
1
解决办法
5453
查看次数

类型错误:_deserialize() 在棉花糖中获得意外的关键字参数“partial”

我正在尝试图像上传 API,但收到以下错误

127.0.0.1  "POST //upload/image HTTP/1.1" 500 -
Traceback (most recent call last):
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask\app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask\app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask_cors\extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask_restful\__init__.py", line 272, in error_router
    return original_handler(e)
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask\app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask\_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "D:\c_code\projects\python_api\.venv\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request …
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x marshmallow flask-marshmallow

2
推荐指数
1
解决办法
2118
查看次数