SQLAlchemy Return All Distinct Column Values

假装没事ソ 提交于 2019-12-18 04:15:20

问题


I am creating a website using Flask and SQLAlchemy. This website keeps track of classes that a student has taken. I would like to find a way to search my database using SQLAlchemy to find all unique classes that have been entered. Here is code from my models.py for Class:

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)

In other words, I would like to get all unique values from the title column and pass that to my views.py. Thank you.


回答1:


query = session.query(Class.title.distinct().label("title"))
titles = [row.title for row in query.all()]



回答2:


Using the model query structure you could do this

Class.query.with_entities(Class.title).distinct()



回答3:


titles = [r.title for r in session.query(Class.title).distinct()]



回答4:


As @van has pointed out, what you are looking for is:

session.query(your_table.column1.distinct()).all(); #SELECT DISTINCT(column1) FROM your_table

but I will add that in most cases, you are also looking to add another filter on the results. In which case you can do

session.query(your_table.column1.distinct()).filter_by(column2 = 'some_column2_value').all();

which translates to sql

SELECT DISTINCT(column1) FROM your_table WHERE column2 = 'some_column2_value';


来源:https://stackoverflow.com/questions/22275412/sqlalchemy-return-all-distinct-column-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!