Cursor创建一个python项目的所有交互
本文内容主要参考自《用cursor玩转AI辅助编程》,将详细记录如何借助 Cursor AI 高效开发一个基于 FastAPI 和 Vue.js 的销售数据分析系统。适合希望了解 AI 辅助编程实践的 Python 全栈开发者。文章涵盖了从项目初始化、依赖配置、数据库设计、后端与前端开发、数据处理、API 实现、测试到前后端联调的完整流程。通过真实的对话与操作示例,帮助读者掌握在实际开发场景下如何高效利用 Cursor 进行协作,显著提升开发效率与代码质量。
后端开发
需求分析
- chat
1
2
3
4我需要开发一个销售数据分析系统,主要功能包括数据处理、统计分析和API。
请推荐合适的Python框架和技术栈,并帮助我搭建基础项目结构。
系统需要处理CSV格式的销售数据,进行数据清洗和分析,最后通过Web API框架提供查询API。
请帮我细化开发步骤,以便后续和你沟通时,能够一步一步实现。 - chat
1
2
3
4
5感谢你的建议!不过我想做一些调整:
1. 我希望使用MySQL而不是PostgreSQL,因为我在本地电脑已经安装了MySQL
2. 暂时不需要Docker,我们先在本地开发运行即可
3. 其他的技术选型都很好,我们继续使用FastAPI和Pandas
请帮我调整项目结构和依赖配置来适配这些变更内容。 - chat生成结果如下:
1
2现在的技术选型我很满意。
请帮我把实现细节细化一下,并生成COMPOSER 可以理解的提示词,以便后续项目实现1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101我来帮你把项目实现细节拆分成更具体的步骤,并按照实现顺序组织。
1. 基础框架搭建
步骤1.1:创建项目结构
mkdir sales_analysis
cd sales_analysis
# 创建所需目录
mkdir -p app/api/endpoints app/core app/models app/schemas app/services tests data
步骤1.2:创建虚拟环境和安装依赖
python -m venv venv
source venv/bin/activate # Linux/Mac
pip install -r requirements.txt
2. 数据模型设计
步骤2.1:创建基础数据模型
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from app.core.database import Base
class Product(Base):
__tablename__ = "products"
id
= Column(Integer, primary_key=True, index=True)
name = Column(String(100), nullable=False)
category = Column(String(50))
price = Column(Float, nullable=False)
class Sale(Base):
__tablename__ = "sales"
id = Column(Integer, primary_key=True, index=True)
product_id = Column(Integer, ForeignKey("products.id"))
quantity = Column(Integer, nullable=False)
sale_date = Column(DateTime, nullable=False)
total_amount = Column(Float, nullable=False)
3. 数据处理服务
步骤3.1:CSV数据处理服务
import pandas as pd
from sqlalchemy.orm import Session
from app.models.sales import Product, Sale
from datetime import datetime
class DataProcessor:
@staticmethod
def process_csv(file_path: str, db: Session):
df = pd.read_csv(file_path)
# 数据清洗和转换逻辑
# 将处理后的数据保存到数据库
4. API开发
步骤4.1:创建API路由
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.services.data_processor import DataProcessor
router = APIRouter()
@router.get("/sales/summary")
def get_sales_summary(db: Session = Depends(get_db)):
# 实现销售汇总统计
pass
@router.get("/sales/trend")
def get_sales_trend(start_date: str, end_date: str, db: Session = Depends(get_db)):
# 实现销售趋势分析
pass
5. 数据分析服务
步骤5.1:创建分析服务
import pandas as pd
from sqlalchemy.orm import Session
from app.models.sales import Sale, Product
class SalesAnalytics:
@staticmethod
def calculate_summary(db: Session):
# 实现销售汇总统计逻辑
pass
@staticmethod
def analyze_trends(db: Session, start_date: str, end_date: str):
# 实现销售趋势分析逻辑
pass
实现顺序和提示词
1. 设置项目基础结构
请帮我创建sales_analysis项目的基础目录结构,包括所有必要的空文件。
2. 创建数据库配置
请帮我实现MySQL数据库配置文件,包括database.py和config.py,需要支持环境变量配置。
3. 实现数据模型
请帮我实现销售数据分析系统的SQLAlchemy数据模型,包括产品表和销售记录表。
4. 实现数据处理服务
请帮我实现CSV数据处理服务,包括数据清洗和导入数据库的功能。
5. 实现API路由
请帮我实现销售数据分析系统的FastAPI路由,包括数据导入、查询和分析API。
6. 实现数据分析服务
请帮我实现销售数据分析服务,包括销售汇总、趋势分析等功能。
测试数据示例
创建示例CSV文件 `data/sample_sales.csv`:
product_id,product_name,category,price,quantity,sale_date
1,产品A,电子,99.9,2,2024-01-01
2,产品B,服装,199.9,1,2024-01-02
下一步建议
1. 我们可以从创建项目基础结构开始
2. 然后实现数据库配置
3. 接着是数据模型的实现
你想从哪个部分开始?每个步骤我都可以提供详细的代码实现。 - 将返回结果保存在notepads中
基础配置/环境搭建
- agent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30请帮我创建sales_analysis项目的基础目录结构,包括所有必要的空文件。
目录是这样的:
sales_analysis/
├── app/
第5章 Cursor项目进阶:销售数据分析(后端Python部分) | 97
│ ├── __init__.py
│ ├── main.py # FastAPI应用入口
│ ├── api/
│ │ ├── __init__.py
│ │ └── endpoints/
│ ├── core/
│ │ ├── config.py
│ │ └── database.py
│ ├── models/
│ ├── schemas/
│ └── services/
├── tests/
├── data/
└── requirements.txt
其中 requirements.txt 内部的依赖是这样的:
fastapi>=0.104.0
uvicorn>=0.24.0
pandas>=2.1.0
numpy>=1.24.0
sqlalchemy>=2.0.0
mysqlclient>=2.2.0
python-dotenv>=1.0.0
pydantic>=2.4.0
pytest>=7.4.0 - agent
1
2
3
4以下是我的真实的MySQL连接信息,请帮我做对应文件的修改
localhost:3306
用户名:root
密码:root - agent
1
帮我创建虚拟环境和安装依赖
功能实现
- agent
1
@notepads 请帮我实现销售数据分析系统的SQLAlchemy数据模型,包括产品表和销售记录表。
- agent
1
@Codebase 请帮我在database.py中添加创建表的代码
- agent
1
2我现在想用运行方法的形式启动整个项目,这样后续我做代码调试时会更方便。
请你帮我修改必要的代码 - agent
1
@notepads 请帮我实现CSV文件的数据处理服务,包括数据清洗和导入数据库的功能。
- agent
1
@notepads 请帮我实现销售数据分析系统的FastAPI路由,包括数据导入、查询和分析API。
- agent
1
@notepads 请帮我实现销售数据分析服务,包括销售汇总、趋势分析等功能。
测试
- chat
1
2@notepads @Codebase
我现在已经写完代码了,需要测试,请你帮我生成一份测试计划 - 将生成内容保存到 notepads中
- agent
1
@notepads 帮我生成单元测试的部分
- chat
1
我需要在cursor中对这个文件做Debug,请告诉我如何配置
- 在notepads中添加以下内容
1
2## 异常处理
在写代码时,如果你捕获了异常,就需要打印异常堆栈信息和当时请求的参数,方便我后续排查问题。
前端开发
准备
- 启动后端项目,获取API文档
- 添加doc 索引, https://vuejs.**g/guide/introduction.html,名字为 Vue.js
- 复制http://localhost:8000/openapi.json,内容保存到文件api.md
1
2
3
4
5# 文档
以下是 API 文档的JSON 定义
{
...
}
需求分析
- chat
1
2
3
4
5
6@api.md @Vue.js
我希望你基于api.md中的API内容,开发一个前端项目。
项目需要用到Vue.js和其他一些配套的前端组件。
整体页面风格希望可以做得简洁、大方。
对于一些数据展示的业务模块,希望可以增加图表组件的支持,看上去更加直观。
我希望你可以清晰罗列每个步骤,方便我后续在“COMPOSER”面板中与Cursor进行沟通 - 复制输出到新的nodepads 中
- chat
1
需要运行前端项目,在电脑上需要安装哪些软件?
后端开发
- agent
1
@notepads 现在帮我创建Vue项目
- agent
1
帮我生成一份测试CSV文件,数据尽可能多一些,方便我后续在前端用图表展示。
- agent
1
2@notepads @Codebase 在前端单击“点击上传”选项时,希望可以加一个进度条,上传成功后希望可以有一个
提示消息,而且现在上传文件没有请求后端接口,你来修复一下 - agent
1
2@Codebase 我在数据库中查看sale_records表数据时,发现有一些数据的total_amount算得不对,
大部分是对的。请你分析可能的原因并给出解决方案。 - agent
1
@notepads 帮我实现销售数据管理模块的其他功能
- 后端更新了接口后,前端需要对应适配
agent1
@notepads @Codebase 请基于最新的API对现有的代码做出修改与适配
- 数据分析模块 agent
1
@notepads 帮我生成数据分析模块的代码
- agent
1
@Codebase 我希望光标悬浮在品类分析图表上可以显示数字
附录
提示词参考
1 | @note @Codebase |
使用上下文,
1 | @notepads @Codebase @docs @file @git @cursor rules @Folders @Chat @Link @Web @Recent changes @Code |
本文由AI生成,内容仅供参考。在实际部署前,请根据具体环境进行测试和验证。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论