-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.py
More file actions
33 lines (26 loc) · 924 Bytes
/
Copy pathdatabase.py
File metadata and controls
33 lines (26 loc) · 924 Bytes
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
32
33
import os
from dotenv import load_dotenv
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, DeclarativeBase
# 1. On charge l'URL depuis le .env
load_dotenv()
db_url = os.getenv("DATABASE_URL")
# SECURITÉ : On vérifie explicitement que l'URL n'est pas vide
# Cela rassure VS Code et empêche un crash au démarrage
if db_url is None:
raise ImportError("❌ La variable DATABASE_URL est manquante dans le fichier .env")
SQLALCHEMY_DATABASE_URL: str = db_url
# 2. On crée le moteur de connexion
engine = create_engine(SQLALCHEMY_DATABASE_URL)
# 3. On prépare la fabrique de sessions
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# 4. Version moderne (SQLAlchemy 2.0+) de la Base
class Base(DeclarativeBase):
pass
# 5. Injection de dépendance pour FastAPI
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()