使用关系优化SQL Alchemy请求

时间:2015-05-01 11:46:22

标签: python flask sqlalchemy

我使用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")

所以我得到linkscategories

在请求链接以显示它们及其类别时,我这样做:

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)

0 个答案:

没有答案