我使用Flask、SqlAlchemy和Marshmallow来构建一个具有Python的REST API。
我使用pipenv install flask flask-sqlalchemy flask-marshmallow和marshmallow-sqlalchemy,它运行得很好。
以下是我的依赖版本:
click==7.1.2
Flask==1.1.2
flask-marshmallow==0.12.0
Flask-SQLAlchemy==2.4.3
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
marshmallow==2.21.0
marshmallow-sqlalchemy==0.19.0
six==1.15.0
SQLAlchemy==1.3.17
Werkzeug==1.0.1现在,我运行这段代码来运行一个不带任何方法的基本服务器
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os
# Init app
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
# Database
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'db.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# Init db
db = SQLAlchemy(app)
# Init ma
ma = Marshmallow(app) # This is where the error appears
# Run Server
if __name__ == '__main__':
app.run(debug=True)当我运行这段代码时,我得到了以下异常:
File "/Users/pro/PycharmProjects/EventPlannerAPI/app.py", line 15, in <module>
ma = Marshmallow(app)
File "/Users/pro/.local/share/virtualenvs/EventPlannerAPI-OoqXq5gv/lib/python3.7/site-packages/flask_marshmallow/__init__.py", line 104, in __init__
self.init_app(app)
File "/Users/pro/.local/share/virtualenvs/EventPlannerAPI-OoqXq5gv/lib/python3.7/site-packages/flask_marshmallow/__init__.py", line 116, in init_app
self.SQLAlchemySchema.OPTIONS_CLASS.session = db.session
AttributeError: 'NoneType' object has no attribute 'OPTIONS_CLASS'因为我正在遵循一个(1-2岁)教程,我不知道为什么它不能工作,特别是在一个类似的项目中,一切都很好。
发布于 2020-06-08 00:53:36
这是不同版本之间的兼容性问题。它应该很快就会被修复。
发布于 2020-06-10 16:16:14
我也有同样的问题。我使用的是python2.7虚拟环境,当我安装marshmallow-sqlalchemy时,默认安装的是0.19.0版。在修复过程中,我将其更改为Python 3,然后将依赖版本更改为0.23.0。现在它工作得很好。0.19.0版本导致了该问题。但我不确定是否也需要更改python版本。
https://stackoverflow.com/questions/62200440
复制相似问题