2016-11-03 9 views
0

私はMySQLバックエンドでsqlachemyを使用しています。実際にはクエリの最適化に問題があります。sqlachemy:結合を使用したクエリの最適化

私はモデルの次のセットがあります。

class Book(Base): 
    __tablename__ = 'books' 
    name = Column(String(32), primary_key=True) 
    sku = Column(Integer, nullable=False) 



class Author(Base): 
    __tablename__ = 'authors' 
    name = Column(String(64), primary_key=True) 
    # book 
    books = relationship(Book, secondary=Table(
     'author_books', Base.metadata, 
     Column('author', String(32), 
       ForeignKey(Author.name), primary_key=True), 
     Column('book', String(64), ForeignKey("book.title"), 
       primary_key=True) 
    ), backref=backref('book_authors', cascade="save-update")) 

とクエリをしていた。実際には非常に非常に遅いです

authors_with_books = [(autor.name, [book.name for book in books]) for author in session.query(Authors)] 

を:(

答えて

0

あなたのクエリはあなたのために遅いですPythonでデータを結合しています。

そのような何かを試してみてください。

authors_with_books = session.query(Author.name, Book.name) 

それは私がこのことについて確認していないSQL

+0

に参加し作成します。例えば。著者と書籍はM2Mの関係に関連しています。実際に私は 'session.query(Author).join(Author.books)'をしようとしていましたが、助けにはなりませんでした –

関連する問題