FlaskとSQLAlchemyを使用してWebサイトを作成しています。このWebサイトは、学生が受講したクラスを追跡します。SQLAlchemyを使用してデータベースを検索し、すべての一意のクラスを見つける方法を見つけたいと思います。クラスのmodels.py
からのコードは次のとおりです。
class Class(db.Model):
__tablename__ = 'classes'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
body = db.Column(db.Text)
created = db.Column(db.DateTime, default=datetime.datetime.now)
user_email = db.Column(db.String(100), db.ForeignKey(User.email))
user = db.relationship(User)
つまり、タイトル列からすべての一意の値を取得して、それをviews.py
に渡したいと思います。ありがとうございました。
query = session.query(Class.title.distinct().label("title"))
titles = [row.title for row in query.all()]
モデルクエリ構造を使用すると、これを行うことができます
Class.query.with_entities(Class.title).distinct()
titles = [r.title for r in session.query(Class.title).distinct()]
@vanが指摘しているように、あなたが探しているのは次のとおりです。
session.query(your_table.column1.distinct()).all(); #SELECT DISTINCT(column1) FROM your_table
ただし、ほとんどの場合、結果に別のフィルターを追加することも検討しています。その場合、あなたはすることができます
session.query(your_table.column1.distinct()).filter_by(column2 = 'some_column2_value').all();
これはSQLに変換されます
SELECT DISTINCT(column1) FROM your_table WHERE column2 = 'some_column2_value';