【发布时间】:2021-11-13 05:00:05
【问题描述】:
我正在使用烧瓶 + 棉花糖 + sqlalchemy。
我必须:
要发送包含此内容的 http 请求:
{
"first_name": "John"
"last_name": "Doe"
"gender": "male"
}
并将值作为整数保存在数据库中,0 代表男性,1 代表女性。
| id | first_name | last_name | gender |
|---|---|---|---|
| 42 | John | Doe | 0 |
到目前为止的路:
requirements.txt
...
Flask==2.0.1
flask-marshmallow==0.14.0
Flask-SQLAlchemy==2.5.1
marshmallow==3.13.0
marshmallow-enum==1.5.1
marshmallow-sqlalchemy==0.26.1
SQLAlchemy==1.4.22
...
schema.py
from .models import Users, Genders
from .extensions import ma
class SignUpSchema(ma.SQLAlchemySchema):
class Meta:
model = Users
first_name = ma.auto_field(data_key='firstName', required=True)
last_name = ma.auto_field(data_key='lastName', required=True)
gender = EnumField(enum=Genders, required=True)
views.py
from flask import request
from flask.views import MethodView
from .schemas import SignUpSchema
from .models import Users, Genders
from .extensions import db
class SignUp(MethodView):
methods = ['POST']
def post(self):
json_data = request.get_json()
schema = SignUpSchema()
data = schema.load(json_data)
user = Users(**data)
db.session.add(user)
db.session.commit()
return {'id': user.id}
models.py
import enum
from sqlalchemy import Column,Integer, String, Enum
from .extensions import db
class Genders(enum.Enum):
MALE = "male"
FEMALE = "female"
class Users(db.Model):
id = Column(Integer, primary_key=True)
first_name = Column(String(100))
last_name = Column(String(100))
gender = Column(Enum(Genders))
当前状态:
{
"firstName": "john",
"lastName": "doe",
"gender": "MALE"
}
| id | first_name | last_name | gender |
|---|---|---|---|
| 42 | john | doe | MALE |
我只是不知道如何更改请求和数据库插入中的枚举值。
【问题讨论】:
标签: python flask enums sqlalchemy marshmallow