为什么SQLAlchemy不返回值? (它返回查询本身)

时间:2020-07-24 20:16:28

标签: sqlalchemy flask-sqlalchemy

我正在尝试从表(查看)中获取列(分数)的平均值。 我尝试了sqlalchemy,但是它没有返回值,而是返回查询本身。我将其打印出来用于说明。

我已经使用SQLAlchemy两个月了,以前从未经历过。

class Review_Service:
    def create_review(self, title, description, professor_name, course, score, difficulty):
        try:
            professor_last_name = professor_name.split(', ')[0]
            professor_first_name = professor_name.split(', ')[1]

            professor_service = Professor_Service()
            professor_object = professor_service.get_professor(professor_last_name, professor_first_name)


            review = Review(title=title, description=description, professor_id=professor_object.id, course=course, score=score, difficulty=difficulty)
            review_dao = Review_Dao()
            review_dao.create_review(review)

            avg_score = review_dao.get_avg_review_score(professor_object.id)

            # I print it to see what it returns
            print (avg_score)

        except Database_Exception as ex:
            raise Service_Exception (str(ex))
class Review_Dao:
    def get_avg_review_score(self, prof_id):

        tmpSession = self.get_connection()
        avg_score = tmpSession.query(func.avg(Review.score)).filter(Review.professor_id == prof_id)
        return avg_score


    def get_connection(self):
        database = DatabaseConnection()
        tmpSession = database.get_session_for_database_created()

        return tmpSession

请注意:该代码较长,但在示例中我缩短了。

这是avg_score打印的内容:

选择avg(review.score)AS avg_1 从评论 在哪里review.professor_id =?

代替值。 另外,如果我在数据库中复制粘贴该SQL查询,它会完美地工作。

0 个答案:

没有答案