File size: 1,162 Bytes
3168916 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # core/db_ready.py
from sqlalchemy import text
from sqlalchemy.exc import OperationalError
from db import init_db, get_session_safe
from models import Course
def ensure_db_ready():
"""
Garante que o schema exista antes de utilizar a sessão.
"""
db = get_session_safe()
try:
db.execute(text("SELECT 1"))
try:
db.query(Course).limit(1).all()
return db
except OperationalError:
db.close()
init_db()
db2 = get_session_safe()
try:
db2.query(Course).limit(1).all()
return db2
except Exception:
db2.close()
raise
except Exception:
db.close()
raise
def commit_with_retry(db, on_retry_init: bool = True) -> None:
try:
db.commit()
except OperationalError:
db.rollback()
if on_retry_init:
init_db()
try:
db.commit()
return
except Exception as e2:
db.rollback()
raise e2
raise |