云计算百科
云计算领域专业知识百科平台

python+flask后端开发~进阶系列 | Flask后端ORM模型执行数据库的增、删、改、查(CRUD)操作

在这里插入图片描述 简介:Python + Flask 组合凭借其简洁高效、灵活易用的特点,深受广大开发者的青睐。而对象关系映射(ORM) 技术更是为数据库操作带来了革命性的变革。ORM 模型不仅简化了数据库操作,还提高了代码的可读性和可维护性。通过将数据库表映射为 Python 类,开发者可以使用面向对象的方式操作数据库,而无需直接编写 SQL 语句。本文将探讨 Flask 后端开发中 ORM 模型的高级应用,帮助你掌握如何通过 ORM 模型高效地执行数据库的增、删、改、查(CRUD)操作。

目录:

一、对象关系映射 ORM 模型的知识回顾 1.1 ORM 模型的基本概念 1.2 ORM 模型的实例快速创建 二、ORM 模型对数据库执行增删改查 2.1 增加数据 2.2 查询数据 2.3 修改数据 2.4 修改数据 三、结束语


🚀 读完本文,你将解锁以下超实用技能和知识储备:

  • 深入理解 ORM 模型的核心概念:掌握 ORM 模型的定义、原理以及它如何将面向对象的编程思想与关系型数据库完美结合。
  • 掌握 Flask 后端 ORM 模型的 CRUD 操作:学会如何使用 Flask 的 ORM 模型进行数据库的增、删、改、查操作,并理解每种操作的实现原理和最佳实践。
  • 提高代码可维护性和可扩展性:通过实际代码示例,学习如何编写高效、可维护且易于扩展的 ORM 模型代码,提升你的后端开发能力。

一、对象关系映射 ORM 模型的知识回顾

1.1 ORM 模型的基本概念

对象关系映射(ORM) 是一种编程技术,用于实现面向对象编程语言中的对象与关系型数据库中的表之间的映射。在 Python 中,最常用的 ORM 框架是 SQLAlchemy。

ORM 模型的核心思想是将数据库中的表映射为 Python 中的类,表中的每一行数据映射为类的一个实例对象。通过这种方式,开发者可以使用面向对象的方式操作数据库,而无需直接编写 SQL 语句。

1.2 ORM 模型的实例快速创建

  • 采用以下代码快速创建一个ORM对象实例:(app.py)

# -*- coding: utf-8 -*-
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# MySQL 所在的主机名
HOSTNAME = "127.0.0.1"
# MYSQL 监听的端口号,默认3306
PORT = 3306
# 连接MySQL的用户名,读者用自己设置的
USERNAME = "root"
# 连接 MYSQL的密码,读者用自己的
PASSWORD = "******"
# MYSQL上创建的数据库名称
DATABASE = "backdb_test"

app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charsetut-8mb4"
# 在app.config中设置连接数据库的基本信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中的配置信息
db = SQLAlchemy(app)

class User(db.Model):
# 创建一个表,名为user,可自定义
__tablename__ = "user"
# 添加主键字段,并定义了类型、主键、自增
id = db.Column(db.Integer, primary_key = True, autoincrement = True)
# 添加字段,并指定字符长度,非空
username = db.Column(db.String(100), nullable = False)
password = db.Column(db.String(100), nullable = False)

with app.app_context():
db.create_all()

上述代码中:

  • User 类继承自 db.Model,表示它是一个 ORM 模型。
  • id、username 和 password 是类的属性,分别对应数据库表中的列。
  • db.Column 用于定义列的类型和约束。
  • db.create_all()用于将Python类中的对象创建执行在数据库中。

此时,已经在数据库中创建了一个名为user的表,并且表中包含三个字段,id,username和password。如果想要知道更多关于创建ORM对象的知识,可以参考我的前一篇博客文章:python+flask后端开发~进阶系列 | 对象关系映射ORN模型与数据库→表之间的映射。

二、ORM 模型对数据库执行增删改查

2.1 增加数据

  • 通过 ORM 模型向数据库中添加数据非常简单。以下是一个示例:

# 增加操作
@app.route('/user/add')
def add_user():
# 1.创建ORM对象
user = User(username = "张三", password = "111111")
# 2.将ORM对象添加到db.session中
db.session.add(user)
# 3.将session中的改变同步到数据库中
db.session.commit()
return "用户创建成功"

上述代码中:

  • user 是一个 User 类的实例对象。
  • db.session.add() 方法将实例对象添加到当前会话中。
  • db.session.commit() 方法提交会话,将数据保存到数据库中。

通过访问http://127.0.0.1:5000/user/add得到渲染结果如下: 在这里插入图片描述 在这里插入图片描述

2.2 查询数据

ORM 模型提供了强大的查询功能,可以方便地查询数据库中的数据。以下是一个示例:

# 查找操作
@app.route('/user/query')
def query_user():
# 1.get查找,根据主键查找
user = User.query.get(1)
print(f"查找成功,{user.id}:{user.password}")
# 2.filter_by查找
# users是一个Query对象,具备列表功能,不是一个user对象
users = User.query.filter_by(username="张三")
for user in users:
print(user.username)
print(type(users))
return "用户查找成功"

在上述代码中:

  • User.query.get(1)返回一个查询对象,具有属性。我通过访问拿到对象中的具体值,并在Flask后端输出。
  • User.query.filter_by(username="张三")方法用于添加查询条件,返回一个Query对象。

渲染结果如下:

在这里插入图片描述

2.3 修改数据

通过 ORM 模型修改并更新数据库中的数据也非常简单。以下是一个示例:

# 修改操作
@app.route('/user/update')
def update_user():
user = User.query.filter_by(username="张三").first()
user.password = "222222"
db.session.commit()
return "用户修改成功"

在上述代码中:

  • 通过 User.query.filter_by() 查询到要更新的用户对象。
  • 修改用户对象的属性值,也就是直接定义,后续提交后进行覆盖。
  • 调用 db.session.commit() 方法提交会话,保存更新。

渲染结果如下: 在这里插入图片描述

2.4 删除数据

通过 ORM 模型删除数据库中的数据也非常简单。以下是一个示例:

# 删除操作
@app.route('/user/delete')
def delete_user():
# 查找到
user = User.query.get(111111)
# 从db.session中删除
db.session.delete(user)
# 将sb.session中的修改同步到数据库中
db.session.commit()
return "用户删除成功"

在上述代码中:

  • 通过User.query.get(111111)查询到要删除的用户对象。
  • 调用 db.session.delete() 方法将用户对象从数据库中删除。
  • 调用 db.session.commit() 方法提交会话,保存删除操作。

渲染结果如下: 在这里插入图片描述

三、结束语

通过本文的介绍,你已经掌握了如何在 Flask 后端开发中使用 ORM 模型高效地执行数据库的增、删、改、查操作。ORM 模型不仅简化了数据库操作,还提高了代码的可维护性和可扩展性。希望本文的内容能够帮助你在 Flask 后端开发中更加高效地使用 ORM 模型,提升你的开发技能。


最后,感谢你的阅读!如果你觉得本文对你有帮助,不妨点赞和关注,我会继续分享更多关于 Python 和 Flask 开发的实用知识。🚀

我的邮箱:yifanduan@stu.ncst.edu.cn.

关注专栏,每周更新,带你从“第一个 Flask 项目”一路进阶到“Docker 部署、JWT 鉴权、微服务拆分”。

版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)。

赞(0)
未经允许不得转载:网硕互联帮助中心 » python+flask后端开发~进阶系列 | Flask后端ORM模型执行数据库的增、删、改、查(CRUD)操作
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!