OpenClassroomsProject / db /create_db.py
github-actions
CD: deploy from GitHub c692788bb3a64cdffab164c9940708c136751e29
e348dc0
import os
from sqlalchemy import create_engine, text
# 1) URL par défaut si l'env n'est pas défini
DATABASE_URL = os.getenv(
"DATABASE_URL",
"postgresql+psycopg2://appuser:appuser@localhost:5432/attrition"
)
engine = create_engine(DATABASE_URL, future=True, echo=False)
DDL = """
CREATE TABLE IF NOT EXISTS predictions (
id SERIAL PRIMARY KEY,
created_at TIMESTAMP DEFAULT NOW(),
age INT,
genre TEXT,
revenu_mensuel INT,
proba_attrition DOUBLE PRECISION,
pred INT
);
-- index utile pour le tri par date
CREATE INDEX IF NOT EXISTS idx_predictions_created_at ON predictions(created_at);
"""
def main():
# 2) Création la table (idempotent)
with engine.begin() as conn:
for stmt in DDL.strip().split(";"):
if stmt.strip():
conn.execute(text(stmt))
# 3) Insérer un exemple (facultatif mais pratique)
with engine.begin() as conn:
conn.execute(
text("""
INSERT INTO predictions(age, genre, revenu_mensuel, proba_attrition, pred)
VALUES(:age, :genre, :rev, :proba, :pred)
"""),
{"age": 41, "genre": "F", "rev": 6000, "proba": 0.1443, "pred": 0}
)
# 4) Vérification
with engine.begin() as conn:
rows = conn.execute(text("SELECT id, created_at, age, pred FROM predictions ORDER BY id DESC LIMIT 3"))
print("Dernières lignes :")
for r in rows:
print(dict(r._mapping))
print(" Table 'predictions' prête.")
if __name__ == "__main__":
main()