SQLAlchemy 返回所有不同的列值
我正在用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)
换句话说,我想从标题这一列中获取所有独特的值,然后把这些值传递给我的views.py
。
4 个回答
正如@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';
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像是给程序设定了一些规则,只有当这些规则被满足时,程序才会继续运行。
比如说,你可能希望程序在用户输入正确的密码后才能进入系统。这个时候,你就需要用到“条件语句”。条件语句就像是一个检查点,它会判断某个条件是否成立。如果成立,程序就会执行相应的操作;如果不成立,程序就会跳过这些操作。
在代码中,条件语句通常是用“if”这个词来表示的。你可以把它想象成一个问句:如果这个条件成立,那么就做某件事。
总之,条件语句帮助我们控制程序的运行逻辑,让程序能够根据不同的情况做出不同的反应。
titles = [r.title for r in session.query(Class.title).distinct()]
你可以使用模型查询的结构来做到这一点。
Class.query.with_entities(Class.title).distinct()
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地获取到。这就像是你想要的水桶里没有水,或者水的颜色不对。
为了避免这些问题,我们可以使用一些工具和方法来确保数据的获取和使用是正确的。这就像是使用一个漏斗来帮助你把水倒得更顺畅,不会洒出来。
总之,处理数据就像是一个小实验,我们需要仔细观察,确保每一步都做对,这样才能得到我们想要的结果。
query = session.query(Class.title.distinct().label("title"))
titles = [row.title for row in query.all()]