Flask:为什么我的模型没有查询方法?

问题描述 投票:0回答:1

我不知道为什么这段代码不起作用:

user = User.query.get(1)

它给我错误信息:AttributeError:类型对象'User'没有属性'query'

我的文件夹结构如下:

enter image description here

以及我在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
python mysql flask sqlalchemy
1个回答
0
投票

而不是对类使用query(),将它与会话对象一起使用。

session.query(User).get(1)
© www.soinside.com 2019 - 2024. All rights reserved.