0
0 комментариев

Есть код:

app = Flask(__name__)
db = SQLAlchemy(app)
 
 
def make_db_session(engine):
    return scoped_session(sessionmaker(autocommit=False,
        autoflush=True,
        bind=engine))
 
def make_db_engine():
    return create_engine(app.config['SQLALCHEMY_DATABASE_URI'], convert_unicode=True)
 
engine = make_db_engine()
db_session = make_db_session(engine)

Далее, я вижу несколько примеров обращения к сессии.

  1. Первый вариант

    db.session.some_action()
    

  2. Второй вариант

    db_session.some_action()
    

  3. Третий вариант

    session = db_session()
    session.some_action()
    

В чем их различия? Какой способ является более верным?

П.С. Еще интересно то, что если делать выборку следующим образом

model = SomeModel.query.filter(some_filter).first()
model.field = new_value

То сохранять необходимо как

db.session.commit()

То есть, создается впечатление, что по умолчанию используется сессия db.session.


Добавить комментарий