From 684b4cc9c0d80ab210b59fb1823942c0e0202b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 13 Jun 2026 11:57:31 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20PostgreSQL=20=D0=BF=D0=BE=D0=B4=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5,=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=B2=20.en?= =?UTF-8?q?v.example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 8 ++++++++ requirements.txt | 2 ++ site/app.py | 24 +++++++++++++++++++++++- site/templates/index.html | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 5444610..6dcfd5f 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,10 @@ FLASK_ENV=production PORT=5000 + +# ── База данных PostgreSQL ── +DB_HOST=postgresqlk8s-master.xxx.svc.cluster.local +DB_PORT=5432 +DB_NAME=contracts +DB_USER=contracts +DB_PASS= +DB_SSLMODE=disable diff --git a/requirements.txt b/requirements.txt index 1ec318e..de46a10 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,5 @@ flask gunicorn python-docx requests +psycopg2-binary +python-dotenv diff --git a/site/app.py b/site/app.py index 5e768f1..431818f 100644 --- a/site/app.py +++ b/site/app.py @@ -1,16 +1,38 @@ +import os +import psycopg2 +from dotenv import load_dotenv from flask import Flask, render_template +load_dotenv() + class ContractsApp: def __init__(self): self.app = Flask(__name__) + self.db = self._connect_db() self.add_routes() + def _connect_db(self): + try: + conn = psycopg2.connect( + host=os.getenv("DB_HOST"), + port=os.getenv("DB_PORT", 5432), + dbname=os.getenv("DB_NAME"), + user=os.getenv("DB_USER"), + password=os.getenv("DB_PASS"), + sslmode=os.getenv("DB_SSLMODE", "disable"), + ) + return conn + except Exception as e: + print(f"DB connect error: {e}") + return None + def add_routes(self): self.app.add_url_rule("/", "index", self.index) self.app.add_url_rule("/health", "health", self.health) def index(self): - return render_template("index.html") + db_status = "connected" if self.db else "no DB" + return render_template("index.html", db_status=db_status) def health(self): return "OK", 200, {"Content-Type": "text/plain"} diff --git a/site/templates/index.html b/site/templates/index.html index 91e3601..bcf5f06 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -9,5 +9,6 @@

Contracts App 🚀

Сервис работает.

+

База данных: {{ db_status }}