【问题标题】:What is flask sqlalchemy query for this sql query这个sql查询的flask sqlalchemy查询是什么
【发布时间】:2020-05-01 04:34:42
【问题描述】:

Here my 3 tables are.

class StudentModel(db.Model):
    __tablename__="students"
    id=db.Column(db.Integer)
    prn=db.Column(db.Integer, primary_key=True)
    name=db.Column(db.String(50), nullable=False)
    mobile=db.Column(db.String(10), nullable=False)
    email=db.Column(db.String(150), nullable=False)
    department=db.Column(db.String(80), nullable=False)    
    classid=db.Column(db.Integer, db.ForeignKey('classes.id'))
    resultid=db.Column(db.Integer, db.ForeignKey('results.prn'))
    classes=db.relationship('ClassModel')
    results=db.relationship('ResultModel')

class ClassModel(db.Model):
    __tablename__="classes"
    id=db.Column(db.Integer, primary_key=True)
    classname=db.Column(db.String(80), unique=True, nullable=False)
    cc=db.Column(db.String(80), nullable=False)
    students=db.relationship('StudentModel', lazy='dynamic')

class ResultModel(db.Model):
    __tablename__="results"
    id=db.Column(db.Integer)
    prn=db.Column(db.Integer, primary_key=True)
    cgpa=db.Column(db.Float, nullable=False)
    students=db.relationship('StudentModel', lazy="dynamic")

SQL 查询:

选择姓名、手机、电子邮件、部门、班级名称、抄送、cgpa 表格 学生 s 内连接 classes c on s.classid=c.id 内连接 结果 r.prn=s.prn;

什么是 sqlalchemy 查询? 请帮帮我。

【问题讨论】:

    标签: python sql flask-sqlalchemy


    【解决方案1】:
    db.session.query(StudentModel.name,StudentModel.mobile,StudentModel.email,
                     StudentModel.department,ClassModel.cc,ResultModel.cgpa)\
              .join(ClassModel)\
              .join(ResultModel)\
              .order_by(StudentModel.name,StudentModel.department).all()
    

    我认为您将错误的列设置为 ResultModel 表中的主键。不应该是id 列吗?

    【讨论】:

    • 是的,它的工作。谢谢,我认为没有必要在 ResultModel 中为 id 设置主键。
    【解决方案2】:

    您可以使用Sqlitis 库将普通 SQL 查询转换为 SQLAlchemy 表达式。它可以从命令行使用,也可以作为库使用。

    您的 SQL 查询将产生以下 SQLAlchemy 表达式:

    select([text('name'), text('mobile'), text('email'), text('department'), text('classname'), text('cc'), text('cgpa')]).select_from(students.join(classes, s.c.classid == c.c.id).join(results, r.c.prn == s.c.prn))
    

    如果我以某种方式提供了帮助,请点赞我 =)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 2019-07-22
      • 2013-07-24
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多