✅ 今日学习目标

✅ 掌握 MySQL 数据库核心操作:库 / 表创建、增删改查(CRUD)、条件查询、联表查询;

✅ 学会 Python 操作 MySQL(pymysql 库),实现后端与数据库的直接交互;

✅ 吃透 ORM 核心思想,掌握 Flask-SQLAlchemy/Django ORM 用法,告别原生 SQL,提升开发效率

✅ 实现「用户模块」数据持久化,将用户信息存入真实 MySQL 数据库,替代模拟数据。

✅ 一、核心知识点精讲(数据层是前后端项目的灵魂,重中之重)

模块 1:MySQL 数据库核心操作(零基础落地,贴合项目)

前后端项目的所有数据(用户、商品、订单)最终都要存入数据库,MySQL 是企业级最主流的关系型数据库,必学!

✅ 1. 核心概念(快速理解)
  • 库(Database):存放同类业务的表集合(比如「电商库」包含用户表、商品表);
  • 表(Table):二维结构,存储具体数据(比如「用户表」包含 id、用户名、密码字段);
  • 字段(Column):表的列,对应数据的属性(比如 id、username、password);
  • CRUD:数据库核心操作 —— 增(Create)、删(Delete)、改(Update)、查(Read)。
✅ 2. 高频 SQL 语句(项目必备,直接复制使用)

sql

-- 1. 创建数据库(指定编码,避免中文乱码)
CREATE DATABASE IF NOT EXISTS python_full_stack DEFAULT CHARACTER SET utf8mb4;

-- 2. 使用数据库
USE python_full_stack;

-- 3. 创建用户表(核心,对应后端用户模块)
CREATE TABLE IF NOT EXISTS user (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 主键自增ID
    username VARCHAR(50) NOT NULL UNIQUE,  -- 用户名,唯一非空
    password VARCHAR(50) NOT NULL,  -- 密码
    nickname VARCHAR(50) NOT NULL,  -- 昵称
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP  -- 创建时间,自动填充
);

-- 4. 增:插入用户数据
INSERT INTO user (username, password, nickname) VALUES ("admin", "123456", "管理员");

-- 5. 查:查询所有用户/条件查询(最常用)
SELECT * FROM user;  -- 查询所有
SELECT * FROM user WHERE username = "admin";  -- 条件查询

-- 6. 改:修改用户昵称
UPDATE user SET nickname = "超级管理员" WHERE username = "admin";

-- 7. 删:删除指定用户
DELETE FROM user WHERE id = 1;
模块 2:Python 操作 MySQL(pymysql 库,原生交互)

python

运行

import pymysql

# 1. 建立数据库连接
conn = pymysql.connect(
    host="localhost",  # 本地数据库地址
    port=3306,         # 端口号
    user="root",       # 数据库用户名
    password="你的MySQL密码",  # 数据库密码
    database="python_full_stack",  # 目标数据库
    charset="utf8mb4"
)

# 2. 获取游标(执行SQL的工具)
cursor = conn.cursor(pymysql.cursors.DictCursor)  # 返回字典格式数据

# 3. 执行SQL(查询用户)
sql = "SELECT * FROM user WHERE username = %s"
cursor.execute(sql, ("admin",))
result = cursor.fetchone()  # 获取单条数据
print(result)  # 输出:{'id':1, 'username':'admin', ...}

# 4. 执行增/改/删,必须提交事务
sql = "INSERT INTO user (username, password, nickname) VALUES (%s, %s, %s)"
cursor.execute(sql, ("test", "123456", "测试用户"))
conn.commit()  # 提交事务,生效数据

# 5. 关闭连接
cursor.close()
conn.close()
模块 3:ORM 映射(核心进阶,企业级必用)

ORM(对象关系映射):将 Python 的类映射为数据库的表,类的实例映射为表的行,不用写原生 SQL,用 Python 语法操作数据库,效率翻倍!

✅ 1. Flask-ORM(Flask-SQLAlchemy)核心用法

python

运行

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import datetime

app = Flask(__name__)
# 配置数据库连接(格式:mysql+pymysql://用户名:密码@地址:端口/库名)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@localhost:3306/python_full_stack"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False  # 关闭不必要的警告
db = SQLAlchemy(app)

# 1. 定义模型类 → 对应数据库的user表(ORM核心:类=表,属性=字段)
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(50), nullable=False)
    nickname = db.Column(db.String(50), nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.datetime.now)

# 2. 创建表(执行一次即可)
with app.app_context():
    db.create_all()

# 3. ORM增删改查(无需SQL)
# 增:添加用户
with app.app_context():
    new_user = User(username="orm_test", password="123456", nickname="ORM测试")
    db.session.add(new_user)
    db.session.commit()

# 查:查询用户
with app.app_context():
    user = User.query.filter_by(username="orm_test").first()
    print(user.nickname)  # 直接调用属性,无需解析字典

# 改:修改用户
with app.app_context():
    user = User.query.filter_by(username="orm_test").first()
    user.nickname = "ORM测试用户"
    db.session.commit()

# 删:删除用户
with app.app_context():
    user = User.query.filter_by(username="orm_test").first()
    db.session.delete(user)
    db.session.commit()

✅ 二、今日核心实战(必做,数据持久化落地)

✅ 实战需求:改造第 1 课的 Flask 用户接口,将「模拟数据」替换为「MySQL+ORM」,实现用户数据真实持久化,重启项目后数据不丢失。
✅ 核心亮点
  1. 用 Flask-SQLAlchemy 实现 ORM 映射,替代原生 SQL;
  2. 所有用户操作(注册、登录、查询)均对接 MySQL 数据库;
  3. 保持接口规范不变,前端可无缝对接。

✅ 三、课后作业

📌 基础作业(必做)
  1. 基于 ORM 创建「商品表」(id、商品名、价格、库存),实现商品的增删改查接口;
  2. 用 Django ORM 实现用户模块的核心操作,对比 Flask-ORM 的差异;
  3. 手写 ORM 的 3 个核心优势,说明为什么企业级开发不用原生 SQL。
📌 进阶作业(选做)

实现「用户 - 商品」关联查询(一个用户可收藏多个商品),用 ORM 完成联表查询,返回用户及收藏的商品数据。

✅ 明日预告

第 3 课:前后端全栈联动核心 —— 接口规范 + AJAX 请求 + 跨域解决,实现前端页面与后端接口的数据互通(全栈关键一步)。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐