私はWebプロジェクトでSQlAlchemyを使用しています。私はscoped_session(session_maker())を使うべきか、あるいはplain session_maker()とWhy?それとも別のものを使うべきですか?scoped_session(session_maker())またはプレーンsession_maker()sqlalchemy?
## model.py
from sqlalchemy import *
from sqlalchemy.orm import *
engine = create_engine('mysql://dbUser:[email protected]:dbPort/dbName',
pool_recycle=3600, echo=False)
metadata = MetaData(engine)
Session = scoped_session(sessionmaker())
Session.configure(bind=engine)
user = Table('user', metadata, autoload=True)
class User(object):
pass
usermapper = mapper(User, user)
## some other python file called abc.py
from models import *
def getalluser():
session = Session()
session.query(User).all()
session.flush()
session.close()
## onemore file defg.py
from models import *
def updateuser():
session = Session()
session.query(User).filter(User.user_id == '4').update({User.user_lname: 'villkoo'})
session.commit()
session.flush()
session.close()
リクエストごとにsession = Session()オブジェクトを作成して閉じます。正しいことをやっているのですか、それとももっと良い方法がありますか? documentation読書
ありがとう。そして、要求ごとにセッションオブジェクトを開いて閉じるのは安全ですか? – northlondoner
@northlondonerは、その安全だけでなく、推奨されるやり方で、http://www.sqlalchemy.org/docs/orm/session.html#lifespan-of-a-contextual-session –
@DanielKluevを参照してください。長いページとそれはあなたのコメント以来しばらくしているので、私は間違ったことを読んでいる、またはページが変更されているが、ページが反対を言っているようだ。私には、この「しないでください」というコード例は、OPのコード例で使用されているパターンとよく似ています。ここでは、新しいセッションが各データベース要求に対して作成されています。これは、用語集の問題(ウェブページの要求とデータベースの要求)が混在しているのですか、または2つの抜粋の間にいくつかの違いがありますか? – mmitchell