Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用SQLALCHEMY从两个表中获取数据_Python_Orm_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 如何使用SQLALCHEMY从两个表中获取数据

Python 如何使用SQLALCHEMY从两个表中获取数据,python,orm,sqlalchemy,flask-sqlalchemy,Python,Orm,Sqlalchemy,Flask Sqlalchemy,假设我有一个模型 import os from flask import Flask from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Students(db.Model): __tablename__ = "students" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String,

假设我有一个模型

import os    
from flask import Flask
from flask_sqlalchemy import SQLAlchemy    
db = SQLAlchemy()    
class Students(db.Model):
    __tablename__ = "students"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    description = db.Column(db.String, nullable=False)


class Hobbies(db.Model):
    __tablename__ = "hobbies"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, nullable=False)
    description = db.Column(db.String)
    student_id = db.Column(db.Integer, db.ForeignKey("students.id"), nullable=False)
现在在flask中,我有以下代码

import os
from flask import Flask, render_template, request
from models import *
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://junaid:junaid@localhost:5432/UOB"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
现在我得到了表中所有的记录

from sqlalchemy.sql import select

with app.app_context():
    a = Hobbies.query.all()
我想得到这样的结果

Hobby.ID、Hobby.title、Hobby.description、Student.name(过滤器为Hobby.Student\u ID=Students.ID)


我想打印嗜好表中的所有记录,简写学生姓名

这是解决方案。如果其他人可以从中受益,请分享

hobbies_with_stud = db.session.query(Students, Hobbies).join(Hobbies, Hobbies.student_id == Students.id).all()

for record in hobbies_with_stud:
    print(record.Hobbies.title + " is the hobby of "+ record.Students.name)

这是解决办法。如果其他人可以从中受益,请分享

hobbies_with_stud = db.session.query(Students, Hobbies).join(Hobbies, Hobbies.student_id == Students.id).all()

for record in hobbies_with_stud:
    print(record.Hobbies.title + " is the hobby of "+ record.Students.name)