shoptracker / app /database.py
saann's picture
ShopTracker V1 - FastAPI + PostgreSQL + Frontend
fd0007e
Raw
History Blame Contribute Delete
1.02 kB
# database.py
# Database connection setup
# Supports both SQLite (local) and PostgreSQL (production/Supabase)
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import os
# Get database URL from environment variable
# If not set, fall back to SQLite for local development
DATABASE_URL = os.getenv(
"DATABASE_URL",
"sqlite:///./shoptracker.db"
)
# PostgreSQL needs different connect_args than SQLite
if DATABASE_URL.startswith("sqlite"):
engine = create_engine(
DATABASE_URL,
connect_args={"check_same_thread": False}
)
else:
engine = create_engine(DATABASE_URL)
# Session factory — used in all API routes
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Base class for all database models
Base = declarative_base()
# Dependency — used in FastAPI route functions
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()