SQLAlchemyのSessionとsession

Sessionとsession

SQLAlchemyでscoped_sessionを使った方法でわからなかったことの一つに、

>>> Session.query(ほにゃらら)

>>> session = Session()
>>> session.query(ほにゃらら)

にどんな違いがあるのか気になっていました。

Session.removeを行うまでずっと同じセッションを返し続けるという仕様ならなんで2通りあるのだろうと疑問でした。

答えは、公式ドキュメントにある通り、

>>> from sqlalchemy.orm import scoped_session
>>> from sqlalchemy.orm import sessionmaker

>>> session_factory = sessionmaker(bind=some_engine)
>>> Session = scoped_session(session_factory)

>>> # session = Session()
>>> # print session.query(MyClass).all()
>>> print Session.query(MyClass).all()    # このprint文は上のコードと等価

と違いはありませんでした。