簡體   English   中英

SQLAlchemy 返回所有不同的列值

[英]SQLAlchemy Return All Distinct Column Values

我正在使用 Flask 和 SQLAlchemy 創建一個網站。 該網站會跟蹤學生已參加的課程。 我想找到一種使用 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)

換句話說,我想從 title 列中獲取所有唯一值並將其傳遞給我的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';

使用flask-sqlalchemy這可以使用-

result = Class.query.distinct(Class.title)

dist_titles = [r.title for r in result]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM