1、项目概述与环境搭建:客户数据管理项目背景、技术栈选型(Python + Flask + MySQL)、开发环境配置与虚拟环境创建
1.1 为什么我们要做这个客户数据管理模块?
说实话,市面上客户管理系统(CRM)已经多到数不清了。但我在实际工作中发现,很多中小团队需要的其实不是一套大而全的SaaS系统,而是一个轻量、可定制、能快速上手的内部工具。
这个项目的背景很简单——我去年帮一家做跨境电商的团队搭过类似模块。他们之前用Excel管理客户信息,几十个销售同时编辑,数据乱得一塌糊涂。后来我给他们写了个Flask小应用,两周上线,效果出奇的好。
所以这次课程,我打算把那个实战经验提炼出来。咱们要做的这个客户数据管理模块,核心功能包括:
- 客户信息增删改查——最基础但最刚需
- 数据筛选与导出——销售们最爱用的功能
- 权限简单控制——不同角色看到不同数据
- 操作日志记录——出了问题能追溯
说白了,这就是一个麻雀虽小五脏俱全的实战项目。你学完以后,稍微改改就能用到自己的工作中。
1.2 技术栈选型:为什么是Python + Flask + MySQL?
选技术栈这件事,我个人的原则是:用最熟悉的工具,解决最实际的问题。
| 技术 | 选型理由 | 我的经验 |
|---|---|---|
| Python 3.8+ | 开发效率高,生态丰富 | 我团队里新来的实习生,一周就能上手写接口 |
| Flask | 轻量灵活,适合中小项目 | 相比Django,Flask的「自由」让我能快速迭代 |
| MySQL 5.7+ | 稳定可靠,关系型数据首选 | 客户数据天然就是结构化数据,用MySQL最合适 |
| Flask-SQLAlchemy | ORM操作数据库,省心省力 | 我早期写原生SQL踩过不少坑,ORM真香 |
你可能会问:为什么不用MongoDB?嗯,客户数据之间关联性很强——一个客户有多个联系人、多条跟进记录。用关系型数据库管理起来更清晰。我在项目中试过用MongoDB存客户数据,后来发现写关联查询时特别别扭,最后还是切回了MySQL。
核心原则:技术选型没有银弹。Python + Flask + MySQL这套组合,最适合「快速交付、易于维护」的中小型Web应用。如果你做的是千万级用户的大平台,那另当别论。
1.3 开发环境配置——手把手带你搭起来
这部分我尽量写得细一些。因为环境配置往往是新手最头疼的环节。我曾经带过一个新人,光装Python就折腾了两天……咱们别走弯路。
1.3.1 安装Python
先去官网 python.org 下载Python 3.8以上版本。我建议用3.9或3.10,稳定且兼容性好。
安装时记得勾选「Add Python to PATH」。这个选项很多人会漏掉,导致后面命令行里找不到python命令。
小技巧:装完后打开终端,输入 python --version 验证。如果显示版本号,说明装好了。如果报错,八成是PATH没配好。
1.3.2 安装MySQL
MySQL的安装方式取决于你的操作系统:
- Windows:下载MySQL Installer,一路下一步。记得设置root密码,我习惯用
root123做本地开发,但生产环境千万别这么干。 - macOS:用Homebrew最方便——
brew install mysql - Linux:
sudo apt-get install mysql-server(Ubuntu/Debian)
装完后启动MySQL服务,然后创建一个数据库:
mysql -u root -p
CREATE DATABASE customer_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;
这里我用了 utf8mb4 字符集。为什么?因为 utf8 在MySQL里其实是个阉割版,存不了emoji。你想想看,客户名字里万一有个表情符号,数据就写不进去了。我曾经因为这个被业务部门投诉过……
1.3.3 安装IDE与插件
我个人推荐用VS Code,免费且插件丰富。必装插件:
- Python(微软官方那个)
- Pylance(代码补全和类型检查)
- MySQL(数据库连接管理)
当然,你用PyCharm也行。只是我习惯轻量级工具,启动快,不占内存。
1.4 虚拟环境创建——这个坑我替你踩过了
虚拟环境这个东西,说白了就是给每个项目一个独立的Python「小房间」。不同项目用的包版本可能不一样,如果没有虚拟环境,全局装包会乱成一锅粥。
我记得有一次,公司两个项目一个用Flask 1.x,一个用Flask 2.x。我图省事没建虚拟环境,结果升级一个包把另一个项目搞崩了。从那以后,我每个项目必建虚拟环境。
1.4.1 创建虚拟环境
在项目根目录下执行:
# Windows
python -m venv venv
# macOS / Linux
python3 -m venv venv
这会在当前目录生成一个 venv 文件夹。里面包含了独立的Python解释器和pip。
1.4.2 激活虚拟环境
# Windows (CMD)
venv\Scripts\activate
# Windows (PowerShell)
venv\Scripts\Activate.ps1
# macOS / Linux
source venv/bin/activate
激活后,终端前面会出现 (venv) 字样。看到这个就说明环境激活成功了。
注意:如果你用PowerShell,可能会遇到执行策略限制。这时候以管理员身份运行 Set-ExecutionPolicy Unrestricted -Scope CurrentUser 即可。我当初被这个坑了半小时……
1.4.3 安装项目依赖
激活虚拟环境后,安装我们需要的包:
pip install flask flask-sqlalchemy pymysql python-dotenv
各包的作用:
flask——Web框架核心flask-sqlalchemy——数据库ORMpymysql——Python连接MySQL的驱动python-dotenv——管理环境变量(比如数据库密码)
装完后,用 pip freeze > requirements.txt 把依赖列表导出。这样别人拿到项目,直接 pip install -r requirements.txt 就能装好所有包。
1.5 验证环境——跑一个Hello World
环境搭好了,咱们写个最简单的Flask应用验证一下。
在项目根目录创建 app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return '客户数据管理模块启动成功!'
if __name__ == '__main__':
app.run(debug=True)
然后在终端运行:
python app.py
打开浏览器访问 http://127.0.0.1:5000,看到「客户数据管理模块启动成功!」就说明环境配置没问题。
提示:debug=True 这个参数在开发阶段非常有用。代码改了之后服务器会自动重启,不用手动关掉再启动。但生产环境一定要关掉,不然会有安全风险。
1.6 项目目录结构——先搭好架子
我习惯在项目一开始就把目录结构定好。这样后面写代码时思路清晰,不会东一榔头西一棒槌。
customer_management/
├── app.py # 应用入口
├── config.py # 配置文件
├── requirements.txt # 依赖列表
├── .env # 环境变量(不上传到Git)
├── .gitignore # Git忽略文件
├── venv/ # 虚拟环境(不上传到Git)
├── models/ # 数据模型
│ └── __init__.py
├── routes/ # 路由(控制器)
│ └── __init__.py
├── templates/ # HTML模板
├── static/ # 静态文件(CSS/JS)
└── utils/ # 工具函数
└── __init__.py
这个结构是我在多个项目中迭代出来的。不算复杂,但足够支撑一个中小型项目。你如果觉得某个部分不合适,完全可以按自己的习惯调整。
1.7 本章小结
这一章我们做了三件事:
- 明确了项目背景——做一个轻量级的客户数据管理模块
- 选定了技术栈——Python + Flask + MySQL,务实且高效
- 搭好了开发环境——Python、MySQL、虚拟环境、项目骨架
下一章,我们会正式开始写代码——先设计数据库表结构,然后用Flask-SQLAlchemy把模型建起来。到时候我会分享一些我在数据表设计上踩过的坑,保证让你少走弯路。
嗯,今天就到这儿。环境搭好之后,记得跑一下那个Hello World,确认一切正常。有问题随时翻回这一章看看,或者……你懂的,动手查查文档也是好习惯。