Spaces:
Running
Running
File size: 829 Bytes
4361d77 | 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 | # database/connection.py
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from dotenv import load_dotenv
import os
load_dotenv()
# Grab database URL from environment variables for security
DATABASE_URL = os.getenv("DATABASE_URL")
if not DATABASE_URL:
raise ValueError("DATABASE_URL environment variable is missing!")
# Create the global async engine
engine = create_async_engine(
DATABASE_URL,
echo=True,
connect_args={"ssl": "require"}
)
# Create a session factory
AsyncSessionLocal = sessionmaker(
bind=engine,
class_=AsyncSession,
expire_on_commit=False
)
# Dependency wrapper (commonly used in FastAPI or async apps)
async def get_session() -> AsyncSession:
async with AsyncSessionLocal() as session:
yield session
|