SQLAlchemy query.filter_by returns 没有

SQLAlchemy query.filter_by returns nothing

我正在学习 SQLAlchemy,我被困在下面的过滤器上,因为它 returns 由于某种原因什么都没有。

search_term = Term.query.filter_by(term=term).first()
# I also tried the below as I know there is "toy" in the table.
search_term = Term.query.filter_by(term='toy').first()

我想获取它,然后 search_term.id 获取属于该术语的 ID,这样我就可以将它用于另一个提交作为关系的一部分。

#routes.py.
@search.route('/search/<term>', methods=['GET', 'POST'])
def index(term):
   search_term = Term.query.filter_by(term=term).first()
    if search_term:
        return 'term exists'

    search_term = Term(term=term)
    db.session.add(search_term)
    db.session.commit()

    search_term = Term.query.filter_by(term=term).first() # Returns nothing
    return f'test: {search_term}'
#Models.py
class Term(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    term = db.Column(db.String(60), index=True, unique=True)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    results = db.relationship('Results', backref='term', lazy='dynamic') 

我不确定,但也许您的模型中需要一个 str 方法。你能添加类似

的内容吗
#Models.py
class Term(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    term = db.Column(db.String(60), index=True, unique=True)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    results = db.relationship('Results', backref='term', lazy='dynamic') 

    def __str__(self):
        return f"id: {self.id}"

现在您返回 Term 没有任何代表