Download backend/database.py from Naveedtechlab/todo-app-phase5: direct link, hf CLI and curl.
- Browser
- Download file 1.04 kB
-
https://huggingface.co/spaces/Naveedtechlab/todo-app-phase5/resolve/main/backend/database.py
- Command line
-
hf download hf://spaces/Naveedtechlab/todo-app-phase5/backend/database.py
-
curl -L -o database.py https://huggingface.co/spaces/Naveedtechlab/todo-app-phase5/resolve/main/backend/database.py
1.04 kB
| """Database connection and session management using SQLModel.""" | |
| import os | |
| from sqlmodel import create_engine, Session, SQLModel | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./todos.db") | |
| # Remove quotes if present in DATABASE_URL | |
| if DATABASE_URL.startswith('"') and DATABASE_URL.endswith('"'): | |
| DATABASE_URL = DATABASE_URL[1:-1] | |
| # Create engine with appropriate settings for SQLite vs PostgreSQL | |
| if "sqlite" in DATABASE_URL: | |
| engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False}) | |
| else: | |
| # PostgreSQL (including Neon) - use psycopg3 | |
| if DATABASE_URL.startswith("postgresql://"): | |
| DATABASE_URL = DATABASE_URL.replace("postgresql://", "postgresql+psycopg://", 1) | |
| engine = create_engine(DATABASE_URL, pool_pre_ping=True) | |
| def get_db(): | |
| """Dependency for database session.""" | |
| with Session(engine) as session: | |
| yield session | |
| def init_db(): | |
| """Create all database tables.""" | |
| SQLModel.metadata.create_all(engine) | |