File size: 700 Bytes
476331c
 
 
 
 
edf212d
476331c
 
 
 
edf212d
 
 
 
 
 
476331c
 
 
 
 
 
 
 
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
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, DeclarativeBase
from .config import Settings, build_database_url

settings = Settings()
db_url = build_database_url(settings)

class Base(DeclarativeBase):
    pass

engine_kwargs = {"echo": False, "pool_pre_ping": True}
if db_url.startswith("sqlite"):
    # Uvicorn / FastAPI でスレッド跨ぎが起きても問題ないように
    engine_kwargs["connect_args"] = {"check_same_thread": False}

engine = create_engine(db_url, **engine_kwargs)
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()