Flask查询加入
Flask query join
我的数据库有两个 table:
class Meals(db.Model):
__tablename__ = 'meals'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String, unique=True)
price = db.Column(db.Float)
description = db.Column(db.String, unique=True)
picture = db.Column(db.String, unique=True)
category = db.relationship("Category")
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
class Category(db.Model):
__tablename__ = 'categories'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String, unique=True)
meals = db.relationship("Meals", back_populates='category')
我想获取包含 Meals.title 和 Category.title
的查询
例如:
用餐 table
Burger_Grand_Canyon 1
Fresh_roll_with_chicken 1
Pizza_Margarita_classic 2
类别Table
Burgers 1
Pizzas 2
结果
Burger_Grand_Canyon Burgers
Fresh_roll_with_chicken Burgers
Pizza_Margarita_classic Pizzas
我试过这样做:
dishes = db.session.query(Meals).join(Category).all()
print(dishes)
for dish in dishes:
print(dish.title)
我该如何解决这个问题?
您的查询结果应该会为您提供分配给 dishes
变量的 Dish
记录列表。 Dish
的每个实例都应该能够通过 dish.category
字段引用其链接的 Category
实例。
换句话说,它应该更像这样:
dishes = db.session.query(Meals).join(Category).all()
for dish in dishes:
print(dish.title, dish.category.title)
我的数据库有两个 table:
class Meals(db.Model):
__tablename__ = 'meals'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String, unique=True)
price = db.Column(db.Float)
description = db.Column(db.String, unique=True)
picture = db.Column(db.String, unique=True)
category = db.relationship("Category")
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
class Category(db.Model):
__tablename__ = 'categories'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String, unique=True)
meals = db.relationship("Meals", back_populates='category')
我想获取包含 Meals.title 和 Category.title
的查询例如: 用餐 table
Burger_Grand_Canyon 1
Fresh_roll_with_chicken 1
Pizza_Margarita_classic 2
类别Table
Burgers 1
Pizzas 2
结果
Burger_Grand_Canyon Burgers
Fresh_roll_with_chicken Burgers
Pizza_Margarita_classic Pizzas
我试过这样做:
dishes = db.session.query(Meals).join(Category).all()
print(dishes)
for dish in dishes:
print(dish.title)
我该如何解决这个问题?
您的查询结果应该会为您提供分配给 dishes
变量的 Dish
记录列表。 Dish
的每个实例都应该能够通过 dish.category
字段引用其链接的 Category
实例。
换句话说,它应该更像这样:
dishes = db.session.query(Meals).join(Category).all()
for dish in dishes:
print(dish.title, dish.category.title)