Ctrl K
ComunidadGuías…

app/db.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker

from app import config


engine = create_engine(
    config.DB_URI,
    connect_args={"application_name": config.DB_CONN_NAME},
    # Test pooled connections on checkout so a connection dropped while idle
    # (DB restart, failover, pgbouncer) is replaced instead of failing a request.
    pool_pre_ping=True,
)

# Bind to the engine rather than one long-lived Connection: a shared Connection
# can get stuck holding a dead DBAPI connection after a disconnect, failing every
# later query with "'NoneType' object has no attribute 'cursor'".
Session = scoped_session(sessionmaker(bind=engine))

# Session is actually a proxy, more info on
# https://docs.sqlalchemy.org/en/14/orm/contextual.html?highlight=scoped_session#implicit-method-access
Session: sqlalchemy.orm.Session