AttributeError: у объекта 'NoneType' нет атрибута 'time_recorded' во Flask, SQLAlchemy - PullRequest
0 голосов
/ 28 июня 2018

У меня есть конечная точка API, которая передает переменную, которая используется для вызова в базе данных. По какой-то причине он не может выполнить запрос, но синтаксис правильный. Мой код ниже.

@app.route('/api/update/<lastqnid>')
def check_new_entries(lastqnid):
    result = Trades.query.filter_by(id=lastqnid).first()
    new_entries = Trades.query.filter(Trades.time_recorded > result.time_recorded).all()

Поле id:

id = db.Column(db.String,default=lambda: str(uuid4().hex), primary_key=True)

Я пробовал filter вместо filter_by, и он не работает. Когда я удаляю filter_by(id=lastqnid), это работает. В чем может быть причина того, что запрос не выполняется?

Таблица сделок, к которой я обращаюсь, равна

class Trades(db.Model):
    id = db.Column(db.String,default=lambda: str(uuid4().hex), primary_key=True)
    amount = db.Column(db.Integer, unique=False)
    time_recorded = db.Column(db.DateTime, unique=False)

1 Ответ

0 голосов
/ 28 июня 2018

Похоже, у вас проблема не в том, что вы нашли что-либо, прежде чем использовать свой результат

@app.route('/api/update/<lastqnid>')
def check_new_entries(lastqnid):
    result = Trades.query.filter_by(id=lastqnid).first()
    # Here result may very well be None, so we can make an escape here
    if result == None:
        # You may not want to do exactly this, but this is an example
        print("No Trades found with id=%s" % lastqnid)
        return redirect(request.referrer)
    new_entries = Trades.query.filter(Trades.time_recorded > result.time_recorded).all()
...