diff --git a/Dockerfile b/Dockerfile index c1850b4..2a9fd7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ +# Базовый образ Python для Flask-приложения. FROM python:3.9-slim WORKDIR /app diff --git a/README.md b/README.md index 3338497..f340985 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # Flask + Postgres Demo Простое CRUD-приложение на Flask, которое пишет и читает из таблицы `nubes_test_table`. -Если поле ввода пустое, вставляется запись "Это Flask сделал". \ No newline at end of file +Если поле ввода пустое, вставляется запись "Это Flask сделал". + +Примечание: таблица создается автоматически при первом запросе. \ No newline at end of file diff --git a/site/app.py b/site/app.py index b2dc764..634158f 100644 --- a/site/app.py +++ b/site/app.py @@ -7,6 +7,7 @@ from flask import Flask, redirect, render_template_string, request app = Flask(__name__) +# Соединение с Postgres, DATABASE_URL имеет приоритет. def get_conn(): db_url = os.getenv("DATABASE_URL") if db_url: @@ -21,6 +22,7 @@ def get_conn(): ) +# Гарантируем наличие таблицы для демо. def ensure_table(): with get_conn() as conn, conn.cursor() as cur: cur.execute( @@ -34,6 +36,7 @@ def ensure_table(): ) +# HTML-шаблон интерфейса. PAGE = """ @@ -117,6 +120,7 @@ def index(): content = request.form.get("txt_content") or "Это Flask сделал" try: with get_conn() as conn, conn.cursor() as cur: + # Проверка дубликатов: не вставляем повтор за короткое время. cur.execute( "SELECT test_data, created_at FROM nubes_test_table ORDER BY id DESC LIMIT 1" ) @@ -152,6 +156,7 @@ def index(): @app.post("/update") def update(): + # Обновление записи по id. with get_conn() as conn, conn.cursor() as cur: cur.execute( "UPDATE nubes_test_table SET test_data=%s WHERE id=%s", @@ -162,10 +167,12 @@ def update(): @app.post("/delete") def delete(): + # Удаление записи по id. with get_conn() as conn, conn.cursor() as cur: cur.execute("DELETE FROM nubes_test_table WHERE id=%s", (request.form.get("id"),)) return redirect("/") if __name__ == "__main__": + # Локальный запуск для отладки. app.run(debug=True, host="0.0.0.0", port=5000)