SQL Alchemy过滤

时间:2018-06-14 19:00:22

标签: python filter flask-sqlalchemy

我试图通过Python和sql炼金术中的用户名过滤数据,但不知何故过滤器无法正常工作。我能够按ID过滤并添加用户。在下面的代码中,我只显示了按用户名过滤的方法。不确定我在做什么错误

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os

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


class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)

def __init__(self, username, email):
    self.username = username
    self.email = email


class UserSchema(ma.Schema):
    class Meta:
    # Fields to expose
        fields = ('username', 'email')


user_schema = UserSchema()
users_schema = UserSchema(many=True)

#endpointtogetuserdetailbyusername
@app.route("/username/<username>",methods=["GET"])
def user_detailbyusername(username):
    user=User.query.filter(User.username=='Tim')
# i tried     user=User.query.filter_by(User.username=='Tim') but no luck
    return user_schema.jsonify(user)

if __name__ == '__main__':
app.run(debug=True)

1 个答案:

答案 0 :(得分:0)

我认为您应该添加一些方法来真正取回记录,例如User.query.filter(User.username=='Tim').all()User.query.filter(User.username=='Tim').first(),如http://flask-sqlalchemy.pocoo.org/2.3/queries/#querying-records

中的示例所示