I have a flask application and I am using flask sqlalchemy.I have two classes like below:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
diaries = db.relationship('Diary', backref='author', lazy=True)
def __repr__(self):
return f"User('{self.username}', '{self.email}')"
class Diary(db.Model):
id = db.Column(db.Integer, primary_key=True)
diary_date= db.Column(db.DateTime, nullable=False, default=datetime.now())
emotion = db.Column(db.String(10))
note = db.Column(db.Text)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Diary('{self.diary_date}', '{self.emotion}','{self.note}')"
I want to order by using diary_date and then take first seven records.I want to show frequent emotion in a week to user.For order by I used following query:
>>> records=(db.session.query(Diary).filter_by(Diary.user_id=User.id).join(Diary
,User.diaries).order_by(Diary.diary_date))
It is giving an error
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
Is the query wrong?Can you suggest a better query? I am new to sqlalchemy sorry if the question is too dumb.