【发布时间】:2015-07-11 06:00:05
【问题描述】:
我正在将 Flask 和 SQL Alchemy 用于 Web 应用程序。
我有一个像这样的多对多关系:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Link(Base):
__tablename__ = 'link'
id = Column(Integer, primary_key=True)
name = Column(String(64))
url = Column(String(128))
class Category(Base):
__tablename__ = 'category'
id = Column(Integer, primary_key=True)
name = Column(String(64))
links = relationship("Link",
secondary=Table('association', Base.metadata,
Column('category_id', Integer, ForeignKey('category.id')),
Column('link_id', Integer, ForeignKey('link.id'))),
backref="categories")
所以我得到了links 和categories。
当请求链接以显示它们及其类别时,我正在这样做:
links = Link.query.all()
for link in links:
print link.name
for categorie in link.categories
print categorie.name
它工作正常,但问题是,对于每个link.categories 调用,都会执行一次 SQL 查询。因此,如果我有 10 个链接,将完成 11 个查询(1 个用于获取链接,每个链接一个用于获取类别)。
难道不能用 Flask 在一个查询中执行吗? (使用JOIN)
(我不想写SQL查询,我想用ORM)
【问题讨论】:
标签: python flask sqlalchemy