我不知道为什么这段代码不起作用:
user = User.query.get(1)
它给我错误信息:AttributeError:类型对象'User'没有属性'query'
我的文件夹结构如下:
以及我在app.py中的代码如下:
from flask import Flask
from werkzeug.contrib.fixers import ProxyFix
from endpoints import api
from flask_sqlalchemy import SQLAlchemy
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity
)
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/flask-restplus'
db = SQLAlchemy(app)
db.init_app(app)
# Setup the Flask-JWT-Extended extension
app.config['RESTPLUS_MASK_SWAGGER'] = False # remove default X-Fields field in swagger
app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
jwt = JWTManager(app)
app.wsgi_app = ProxyFix(app.wsgi_app)
api.init_app(app)
app.run(debug=True)
我在模型/用户中的代码如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from sqlalchemy import (Text, String, DateTime)
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import datetime
import uuid
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/flask-restplus'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
uuid = db.Column(String(255))
email = db.Column(String(255))
password = db.Column(String(255))
access_token = db.Column(Text)
refresh_token = db.Column(Text)
created_at = db.Column(DateTime)
@classmethod
def seed(self, fake):
user = User(
uuid = str(uuid.uuid4()),
email = fake.email(),
password = generate_password_hash('password'),
created_at = datetime.now(),
)
db.session.add(user)
db.session.commit()
您可以在模型/用户中看到,我从db继承了User,我哪里出错了?
编辑:我放
user = User.query.get(1)
在endpoints / user.py中具有如下代码片段:
import sys
sys.path.append("..")
from models.user import User
@api.route('/login')
@api.response(404, 'User not found')
class Login(Resource):
@api.expect(resource_fields)
def post(self):
"""
Obtain user details & token
"""
user = User.query.get(1) # this one triggers error
而不是对类使用query(),将它与会话对象一起使用。
session.query(User).get(1)