哈喽大家好~这里是踩坑后果断换思路、效率拉满的项目小白!

上一篇(《小白从零开始做多模态新生儿疼痛评估系统|第七篇:Navicat数据库设计实操(三端适配+核心表构建)》),我们已经在Navicat中完成了数据库和6张核心表的创建,数据地基已经稳稳打好。

本来想继续在IDEA里配置Python环境,结果我发现:IDEA默认不带Python支持,装插件、配解释器步骤又多又容易出错,也考虑过使用vscode等软件,但是考虑一个项目在同一个软件里,更方便我们理解。

所以这一篇我直接换最简单、最稳的方案:不用在IDEA里配置任何Python,前端继续用IDEA写,后端直接用CMD命令行跑,两步分开、互不干扰,全程零配置陷阱,小白照着做一遍必成功!

一、思路转变:为什么不推荐在IDEA里配Python?

很多同学用的是 IntelliJ IDEA 旗舰版/社区版,它本身是做Java开发的:

  • 默认不内置Python插件

  • 装插件、配解释器、选虚拟环境步骤繁琐

  • 容易出现“找不到模块”“运行按钮不显示”等莫名其妙的报错

  • 对只写前端、偶尔跑后端的场景完全没必要折腾

所以我直接给出小白最优解

  • 写前端 HTML / CSS / JS → 继续用 IDEA

  • 运行 Python 后端 → 只用系统自带的 CMD 命令提示符

两套工具互不干扰,简单、稳定、不出错。

二、前期准备:检查Python环境

第1步:打开命令提示符

  • 快捷键 Win + R

  • 输入 cmd 回车

第2步:检查是否安装Python

在CMD里输入:

python --version

  • 如果出现类似 Python 3.8 / 3.9 / 3.10 / 3.11 → 环境正常,直接跳到第3步

  • 如果提示“不是内部或外部命令” → 执行第2步安装Python

三、安装Python(未安装才需要做)

  1. 打开官网:https://www.python.org/downloads/(文档提示字数超限,直接点击官网黄色下载按钮即可)

  2. 点击黄色按钮 Download Python 3.x.x

  3. 运行安装包

  4. ⚠️ 必勾选:Add Python to PATH(不勾后面全报错)

  5. 点击 Install Now 等待完成

  6. 安装完关闭旧CMD,重新开一个CMD

再次输入 python --version,能显示版本号就成功。

四、创建后端文件结构

在你放前端HTML页面的项目文件夹里,新建一个文件夹,命名为:

backend

backend 里用记事本新建两个文件:

文件1:database.py

复制下面全部代码,注意修改你的MySQL密码和数据库名:

import mysql.connector
from mysql.connector import pooling

db_config = {
    "host": "localhost",
    "user": "root",
    "password": "你的MySQL密码",  # 改成你的密码
    "database": "np",
    "pool_name": "mypool",
    "pool_size": 10
}

connection_pool = pooling.MySQLConnectionPool(**db_config)

def get_db_connection():
    return connection_pool.get_connection()

def execute_query(sql, params=None, fetch_one=False, fetch_all=False):
    conn = get_db_connection()
    cursor = conn.cursor(dictionary=True)
    try:
        cursor.execute(sql, params or ())
        if fetch_one:
            result = cursor.fetchone()
        elif fetch_all:
            result = cursor.fetchall()
        else:
            conn.commit()
            result = cursor.lastrowid
        return result
    finally:
        cursor.close()
        conn.close()

文件2:main.py

复制下面全部代码,不用改任何内容:

from fastapi import FastAPI, Form
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
import random

from database import execute_query

app = FastAPI(title="新生儿疼痛评估系统API")

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.get("/")
async def root():
    return {"message": "新生儿疼痛评估系统运行中", "status": "ok"}

@app.get("/api/beds")
async def get_beds():
    sql = """
        SELECT b.id, b.bed_number, b.status, b.device_status,
               p.id as patient_id, p.name as patient_name
        FROM beds b
        LEFT JOIN patients p ON b.current_patient_id = p.id
    """
    beds = execute_query(sql, fetch_all=True)
    return {"success": True, "data": beds}

@app.get("/api/patients")
async def get_patients():
    sql = """
        SELECT p.*, b.bed_number
        FROM patients p
        LEFT JOIN beds b ON b.current_patient_id = p.id
    """
    patients = execute_query(sql, fetch_all=True)
    return {"success": True, "data": patients}

@app.post("/api/assess")
async def create_assessment(
    patient_id: int = Form(...),
    bed_id: int = Form(...),
    nurse_notes: str = Form("")
):
    pain_score = round(random.uniform(0, 10), 1)
    
    if pain_score <= 2:
        pain_level = "平静"
    elif pain_score <= 5:
        pain_level = "轻度疼痛"
    elif pain_score <= 8:
        pain_level = "中度疼痛"
    else:
        pain_level = "重度疼痛"
    
    sql = """
        INSERT INTO assessments (patient_id, bed_id, pain_score, pain_level, nurse_notes)
        VALUES (%s, %s, %s, %s, %s)
    """
    assessment_id = execute_query(sql, (patient_id, bed_id, pain_score, pain_level, nurse_notes))
    
    return {
        "success": True,
        "assessment_id": assessment_id,
        "pain_score": pain_score,
        "pain_level": pain_level
    }

if __name__ == "__main__":
    print("=" * 50)
    print("后端启动中...")
    print("API文档: http://localhost:8000/docs")
    print("=" * 50)
    uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)

五、安装Python依赖包

重新打开CMD,输入下面命令安装后端需要的库:

pip install fastapi uvicorn mysql-connector-python python-multipart

重点提示:若安装时出现“link fetch error” 报错(文档中相关URL反馈此问题),说明默认镜像源访问失败,改用清华镜像源安装,命令如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fastapi uvicorn mysql-connector-python python-multipart

等待出现 Successfully installed 即完成。

六、启动后端服务

第1步:进入backend文件夹

在CMD里输入(换成你自己的项目路径):

cd /d D:\你的项目路径\backend

第2步:启动服务

python main.py

出现下面内容就代表启动成功

================================================== 后端启动中... API文档: http://localhost:8000/docs ================================================== INFO: Uvicorn running on http://0.0.0.0:8000

注意:若启动后访问 http://0.0.0.0:8000 出现 “link fetch error” 报错,可检查端口是否被占用,或重新启动后端服务。

我这里出现了警告

修改 main.py 文件最后一行

找到 main.py 文件,把最后一行:

uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)

改成:

uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)

重新运行,正常

七、验证后端是否正常

打开浏览器,访问:

http://localhost:8000

如果看到:

{"message":"新生儿疼痛评估系统运行中","status":"ok"}

说明:

  • Python环境正常

  • 后端服务启动成功

  • 数据库连接配置无误

再访问接口文档:

http://localhost:8000/docs

能看到所有API接口列表,就完全OK。

八、小白常见报错解决

  1. 报错:No module named ‘fastapi’

    1. 原因:依赖没装上

    2. 解决:重新执行pip安装命令,若出现“link fetch error”,改用清华镜像源

  2. 报错:数据库连接失败

    1. 原因:密码错 / MySQL没开 / 数据库名不对

    2. 解决:检查database.py里的password和database,确保MySQL服务正在运行

  3. 报错:端口8000被占用

    1. 解决:把main.py最后一行port改成8001/8080等

  4. CMD找不到python

    1. 解决:重装Python,务必勾选Add Python to PATH

  5. 报错:“link fetch error”

    1. 原因:pip镜像源访问失败(对应文档中清华镜像、后端访问URL报错)

    2. 解决:安装依赖用清华镜像源,访问后端用 http://localhost:8000 替代 http://0.0.0.0:8000,重新启动服务

九、项目分工与工具总结

工作内容

使用工具

优势

编写前端三端H5页面

IDEA

专业、熟悉、不用改

运行Python后端API

CMD命令行

零配置、不报错、简单稳定

两套工具完全独立,互不干扰,这是最适合小白的开发模式。

十、当前进度 & 下一步计划

已完成

  • ✅ 三端H5页面搭建

  • ✅ MySQL数据库 + 6张核心表

  • ✅ Python + FastAPI后端环境搭建(解决“link fetch error”等报错)

  • ✅ 后端API服务启动成功并可访问

下一步(第九篇内容)

  • 前端HTML页面对接后端API

  • 实现床位列表、患者信息、疼痛评估接口调用

  • 页面真实数据渲染,让三端真正“活”起来

如果你也在跟着做新生儿疼痛评估系统,遇到任何命令行、启动、报错问题(尤其是“link fetch error”相关),欢迎在评论区留言,我会一一解答!

小白继续冲,下一篇直接前后端联调~🚀

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐