以下是使用 Poetry 创建基于 Flask 的后端项目,并添加 HTTP 示例入口和 PostgreSQL 数据库操作模块的完整指南:
- 创建项目并安装依赖 bash
poetry new flask-backend cd flask-backend 添加依赖项(Flask、PostgreSQL驱动、数据库操作库): bash
poetry add flask psycopg2-binary
poetry add -D pytest
- 项目结构 bash
flask-backend/ ├── pyproject.toml # 项目配置 ├── poetry.lock # 依赖锁定 ├── src/ # 代码目录 │ └── flask_backend/ # 项目包 │ ├── init.py │ ├── app.py # Flask应用入口 │ └── db.py # PostgreSQL数据库操作模块 └── tests/ # 测试目录(可选)
- 编写 Flask 应用入口(src/flask_backend/app.py) python
from flask import Flask, jsonify, request from .db import get_db_connection, create_table, insert_data, query_data
app = Flask(name)
@app.route('/') def index(): return jsonify({"message": "Flask Backend Service Running!"})
@app.route('/api/data', methods=['POST']) def add_data(): data = request.json.get('data') if not data: return jsonify({"error": "Missing 'data' field"}), 400 conn = get_db_connection() insert_data(conn, data) conn.close() return jsonify({"success": True}), 201
@app.route('/api/data', methods=['GET']) def get_data(): conn = get_db_connection() results = query_data(conn) conn.close() return jsonify(results), 200
if name == "main": # 创建数据库表(首次运行时) conn = get_db_connection() create_table(conn) conn.close()
- 实现 PostgreSQL 数据库操作模块(src/flask_backend/db.py) python
import psycopg2 from psycopg2 import sql
DB_NAME = "your_db_name" DB_USER = "your_db_user" DB_PASSWORD = "your_db_password" DB_HOST = "localhost" DB_PORT = "5432"
def get_db_connection(): conn = psycopg2.connect( dbname=DB_NAME, user=DB_USER, password=DB_PASSWORD, host=DB_HOST, port=DB_PORT ) return conn
def create_table(conn): with conn.cursor() as cur: cur.execute(""" CREATE TABLE IF NOT EXISTS data_store ( id SERIAL PRIMARY KEY, content TEXT NOT NULL ); """) conn.commit()
def insert_data(conn, content): with conn.cursor() as cur: cur.execute( "INSERT INTO data_store (content) VALUES (%s)", (content,) ) conn.commit()
def query_data(conn): with conn.cursor() as cur: cur.execute("SELECT * FROM data_store") return [{"id": row[0], "content": row[1]} for row in cur.fetchall()]
- 配置环境变量(可选但推荐) 创建 .env 文件以避免硬编码敏感信息: env
DB_NAME=flask_db DB_USER=postgres DB_PASSWORD=your_password DB_HOST=localhost DB_PORT=5432 安装 Python 的环境变量加载库: bash
poetry add python-dotenv 修改 db.py 加载环境变量: python
from dotenv import load_dotenv import os
load_dotenv()
DB_NAME = os.getenv("DB_NAME") DB_USER = os.getenv("DB_USER") DB_PASSWORD = os.getenv("DB_PASSWORD") DB_HOST = os.getenv("DB_HOST", "localhost") DB_PORT = os.getenv("DB_PORT", "5432")
-
启动服务 使用 Poetry 运行 Flask 应用: bash
-
测试接口
-
测试根路径 bash
- 添加数据 bash
curl -X POST -H "Content-Type: application/json"
-d '{"data": "Hello from Flask!"}'
http://localhost:5001/api/data
3. 查询数据
bash
curl http://localhost:5001/api/data
- 数据库初始化 确保 PostgreSQL 已安装并创建数据库: bash
createdb flask_db
psql -c "CREATE DATABASE flask_db;"
- 完整项目结构 bash
flask-backend/ ├── .env ├── pyproject.toml ├── poetry.lock ├── src/ │ └── flask_backend/ │ ├── init.py │ ├── app.py │ └── db.py └── tests/ └── test_app.py # 可添加测试用例
- 扩展建议 环境变量管理 使用 python-dotenv 加载 .env 文件,避免直接写入敏感信息。 数据库迁移 使用 Flask-Migrate(基于 Alembic)管理数据库迁移: bash
poetry add flask-migrate 日志和监控 添加日志记录: python
import logging
logging.basicConfig(level=logging.INFO)
通过以上步骤,您已创建了一个基于 Flask 的后端服务,包含: ● 公开的 HTTP 接口(/ 和 /api/data) ● PostgreSQL 数据库的增删改查功能 ● 通过 Poetry 管理依赖和虚拟环境 ● 支持跨网络访问(--host 0.0.0.0) 前端可通过 http://localhost:5001/api/data 与后端交互。
- 以flask方式启动 poetry run flask --app "src.flask_backend.app:app" run --host 0.0.0.0 --port 5001 --debug # 注意,此命令启动各python模块之间的引用尽量使用相对路径,或者引用使用project-root包下的绝对路径
- 以python命令启动 poetry run python src/flask_backend/app.py # 注意,引用使用project-root包下的绝对路径
Flask方式创建项目,以及提供http后端服务,是dify实现逻辑