Я новичок в SQLAlchemy. И теперь мне нужно запросить некоторые данные следующим образом:
def get_xx():
sess = Session()
return sess.query(xx).filter(
xx.id == 3, xx.status == 1
).first()
Уровень изоляции — повторяемое чтение, автофиксация отключена; Поэтому я всегда получаю один и тот же результат, даже если значение было обновлено.
И теперь возникает вопрос: sess.close() и sess.commit(), какой метод следует ли мне использовать?
Окончательное решение, которое я пытаюсь использовать, выглядит следующим образом, однако я не уверен, достаточно ли оно хорошо (закрывается после фиксации)?
@contextmanager
def auto_session():
sess = Session()
try:
yield sess
sess.commit()
except: # swallow any exception
sess.rollback()
finally:
sess.close()
И исходный код изменился
def get_xx():
with auto_session() as sess:
return sess.query(xx).filter(
xx.id == 3, xx.status == 1
).first()
Подробнее здесь: https://stackoverflow.com/questions/383 ... ion-commit
SQLAlchemy: session.close() или session.commit() ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение