当前位置: 首页 > news >正文

Flask 入门到实战(2):使用 SQLAlchemy 打造可持久化的数据层

Flask 入门到实战:使用 SQLAlchemy 打造可持久化的数据层


一、前言:为什么用 Flask-SQLAlchemy?

在 Python Web 开发中,操作数据库的方式主要有两种:

  1. 直接写 SQL(繁琐且难维护)
  2. 使用 ORM(对象关系映射),例如 SQLAlchemy

Flask-SQLAlchemy 是 Flask 官方推荐的 SQLAlchemy 封装扩展,它让数据库操作变得:

  • 更符合 Python 风格
  • 更容易维护
  • 更易于与 Flask 集成

二、环境准备

确保你已安装 Flask。如果没有:

pip install flask

然后安装 Flask-SQLAlchemy:

pip install flask_sqlalchemy

三、基本项目结构

project/
├── app.py
└── models.py

四、配置数据库连接

app.py 中添加配置(使用 SQLite 作为示例):

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 配置数据库 URI
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Falsedb = SQLAlchemy(app)

五、定义模型(Model)

新建 models.py 文件或在 app.py 中定义模型:

from app import dbclass User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)email = db.Column(db.String(120), unique=True, nullable=False)def __repr__(self):return f'<User {self.username}>'

六、初始化数据库

创建数据库文件和表结构:

在 Python 控制台执行:

from app import db
db.create_all()

这将在项目根目录生成一个 site.db 文件。

或者你也可以直接使用类似Navicat的数据库管理软件直接自己建库,然后连接。


七、增删改查操作(CRUD)

大致都遵循这样的步骤:

1.创建实例对象;

2.添加到数据库会话

3.提交会话,保存到数据库端

1. 添加用户

from app import db
from models import Usernew_user = User(username='alice', email='alice@example.com')
db.session.add(new_user)
db.session.commit()

2. 查询用户

user = User.query.filter_by(username='alice').first()
print(user.email)

3. 修改用户

user.email = 'newalice@example.com'
db.session.commit()

4. 删除用户

db.session.delete(user)
db.session.commit()

八、集成到 Web 应用

你可以通过视图函数来接收用户输入并操作数据库,例如:

@app.route('/add_user/<username>/<email>')
def add_user(username, email):# 创建用户实例user = User(username=username, email=email)# 添加到数据库会话db.session.add(user)# 提交会话到数据库db.session.commit()return f'用户 {username} 已添加'

九、数据库迁移:使用 Flask-Migrate(可选进阶)

如果项目不断发展,你会频繁变更模型结构,这时数据库迁移就变得非常重要。

安装 Flask-Migrate:

pip install flask-migrate

基本使用:

from flask_migrate import Migratemigrate = Migrate(app, db)

然后使用 CLI 工具进行版本管理:

flask db init
flask db migrate -m "Initial migration"
flask db upgrade

这可以避免每次手动调用 create_all()


十、项目结构推荐(进阶)

随着项目变大,推荐使用以下结构:

project/
├── app/
│   ├── __init__.py
│   ├── models.py
│   ├── routes.py
│   └── templates/
├── migrations/
├── config.py
└── run.py

使用 Flask 的工厂模式(Factory Pattern)可以提高可维护性与扩展性。


十一、总结

通过本篇内容,你已经掌握了:

  • 如何使用 Flask-SQLAlchemy 管理数据库
  • 如何定义模型并进行增删改查操作
  • 如何将数据库操作集成到 Web 应用中
  • 数据迁移工具的基本用法

接下来我们将深入学习:ORM:用 SQLAlchemy 优雅操作数据库

http://www.dtcms.com/a/273514.html

相关文章:

  • Java-70 深入浅出 RPC Dubbo 详细介绍 上手指南
  • QT控件 使用QtServer系统服务实现搭建Aria2下载后台服务,并使用Http请求访问Json-RPC接口调用下载退出
  • 和鲸社区深度学习基础训练营2025年关卡4
  • Kubernetes 高级调度 01
  • 飞算科技正在撬动各行业数字化转型的深层变革
  • 【理念●体系】Windows AI 开发环境搭建实录:六层架构的逐步实现与路径治理指南
  • Flask 入门到实战(3):用 SQLAlchemy 优雅操作数据库
  • Cursor、飞算JavaAI、GitHub Copilot、Gemini CLI 等热门 AI 开发工具合集
  • 上位机知识篇---SD卡U盘镜像
  • Gartner《构建可扩展数据产品建设框架》心得
  • 【Linux网络】深入理解HTTP/HTTPS协议:原理、实现与加密机制全面解析
  • 没有Mac如何完成iOS 上架:iOS App 上架App Store流程
  • 从零到一:深度解析汽车标定技术体系与实战策略
  • Python打卡:Day50
  • 将Blender、Three.js与Cesium集成构建物联网3D可视化系统
  • uniapp类似抖音视频滑动
  • GNhao,获取跨境手机SIM卡跨境通信新选择!
  • JAVA面试宝典 -《Spring Boot 自动配置魔法解密》
  • 森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
  • 【LeetCode 热题 100】146. LRU 缓存——哈希表+双向链表
  • [特殊字符]远程服务器配置pytorch环境
  • 闲庭信步使用图像验证平台加速FPGA的开发:第八课——图像数据的行缓存
  • 基于ASP.NET MVC+SQLite开发的一套(Web)图书管理系统
  • ContextMenu的Item如何绑定命令
  • 手机恢复出厂设置怎么找回数据?Aiseesoft FoneLab for Android数据恢复工具分享
  • 【音视频】HLS拉流抓包分析
  • 【mac】快捷键使用指南
  • Java 深入解析:JVM对象创建与内存机制全景图
  • uni-app获取手机当前连接的WIFI名称
  • 如何将文件从OPPO手机传输到电脑