从表中选择不同的值而不使用 sqlachemy 中的会话

时间:2021-05-03 08:54:21

标签: python sql flask sqlalchemy flask-sqlalchemy

我在 sqlalchemy 中有表:

class Exams(db.Model):
    __tablename__ = 'exams'

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name_of_Exam = db.Column(db.String(140))
    number_of_exam_task = db.Column(db.SmallInteger)
    name_of_exams_task = db.Column(db.String(140))

我需要从第一列中获取唯一值。我的代码是:

qqq = db.session.query(Exams.name_of_Exam).distinct()
for i in qqq:
    print(i.name_of_Exam)

如何使用 db.session 实现这样的结果?我试过这样的事情:

qqq = Exams.query.options(load_only("name_of_Exam")).distinct(Exams.name_of_Exam)
for i in qqq:
    print(i.name_of_Exam)

失败了

1 个答案:

答案 0 :(得分:1)

不太清楚你为什么要这样做——通过会话来做这件事看起来更清晰、更干净,但以下应该有效:

    data = Exams.query.with_entities(Exams.name_of_Exam).distinct(Exams.name_of_Exam).all()

    for x in data:
        print(x.name_of_Exam)