Flask Web 极简教程(三)- SqlAlchemy(Part A)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: Flask Web 极简教程(三)- SqlAlchemy(Part A)

一、ORM 模型设计

在MTV架构中,M表示Model层负责与数据库进行交互,ORM(Object Relational Mapping)对象关系映射可以将具体的模型与数据库中的表进行一一对应,模型对象的属性与数据库表的字段是一一对应的;通过模型的操作来实现对数据库表的操作

ORM的重要特性:

  • 基于面向对象的编程思想
  • 几乎不写SQL,提升开发效率
  • 支持多种类型数据库切换

SQLAlchemy

SQLAlchemy 是一个提供了SQL工具包及对象关系映射(ORM)工具的第三方库,Flask框架本身是没有ORM功能的,因此需要通过使用Flask-SQLAlchemy扩展来实现ORM,关于Flask-SQLAlchemy的介绍可以参考官方文档

Flask的ORM扩展需要单独进行安装,但是需要提前安装 mysqlclient 依赖

# 依赖
pip3 install mysqlclient
pip3 install Flask-SQLAlchemy
复制代码

Flask-SQLAlchemy连接数据库的配置如下:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://用户名:密码@数据库地址/要连接的数据库'
复制代码

SQLALCHEMY_DATABASE_URI,数据库URI既统一资源定位符,是一个用于标识资源名称的字符串

如果要配置多个数据库,可以使用这种方式

SQLALCHEMY_BINDS = {
    'mysql': 'mysqldb://localhost/数据库',
    'sqlite': 'sqlite:////path/to/数据库'
}
复制代码

ORM 模型创建

在PyCharm创建新的Flask项目flask-sqlalchemy

image.png

使用ORM模型需要先绑定到Flask对象,在app.py中创建Flask对象之后,将对象绑定到数据库

from flask_sqlalchemy import SQLAlchemy
# 配置数据库连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/flask'
# 绑定Flask对象
db = SQLAlchemy(app)
复制代码

接着在该文件中设计数据库模型User

# 设计数据库模型
class User(db.Model):
    # 指定表名称
    # __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), nullable=False)
    password = db.Column(db.String(256), nullable=False)
    birth_date = db.Column(db.Date, nullable=True)
    age = db.Column(db.Integer, default=0)
复制代码

终端中执行创建命令输入 python3 ,通过执行以下命令创建表或者删除表

from app import db
db.create_all() # 创建所有的表
db.drop_all() # 删除所有的表
复制代码

退出命令行,重新进入,先执行删除,再执行创建,不指定表名时默认表名由sys+模型名称首字母小写

image.png

ORM 模型字段类型

字段类型 字段描述
Integer/Float 整数类型/浮点数类型
String(size) 字符串,通过max_lenght指定字符串长度
Text 长文本
DateTime 时间类型,对应datetime
Boolean 布尔类型
PickleType 存储为一个持久化的Python对象
LargeBinary 存储一个任意大的二进制数据


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
Python
python3之flask快速入门教程Demo
python3之flask快速入门教程Demo
38 6
|
19天前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
|
13天前
|
关系型数据库 MySQL 数据库
如何使用Python的Flask框架来构建一个简单的Web应用
如何使用Python的Flask框架来构建一个简单的Web应用
27 0
|
5天前
|
JavaScript 程序员 应用服务中间件
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(2)
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(2)
19 7
|
5天前
|
XML 存储 JavaScript
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(1)
快速入门Web开发(上) 黑马程序员JavaWeb开发教程(1)
16 5
|
4天前
|
关系型数据库 MySQL 数据库
Flask使用SQLAlchemy添加悲观锁和乐观锁
什么是悲观锁和乐观锁? • 悲观锁:假设在访问数据时会发生冲突,因此在访问数据前,先锁住数据。在锁被释放之前,其他事务无法访问此数据。是属于数据库中的一种互斥锁机制 • 乐观锁:假设在访问数据时冲突较少,因此不会锁住数据,而是在提交更新时检查是否有冲突。如果检测到冲突,则放弃更新。但是乐观锁并非真正的数据库锁。
|
12天前
|
开发框架 开发者 Python
使用 Flask 为 Web 应用添加路由
通过学习 Flask 中的视图函数和路由规则,你可以使用 Flask 构建强大的 Web 应用程序并为其添加功能。在 Flask 中,视图函数以 Python 函数的形式定义,每个视图函数都与一个 URL 相关联。在 Flask 中,URL 处理程序被称为视图函数,它们用于响应客户端请求并返回响应。在 Flask 应用程序中,这是可选的。在这里,我们将其命名为 'hello',并将其与 URL '/hello/<name>' 绑定在一起。在上面的示例中,我们使用了默认的视图函数名称 'hello'。
15 2
|
18天前
|
前端开发 JavaScript 开发工具
Web网页前端教程免费:引领您踏入编程的奇幻世界
Web网页前端教程免费:引领您踏入编程的奇幻世界
18 3
|
26天前
|
SQL 前端开发 关系型数据库
28. Python Web 编程:Django 基础教程
28. Python Web 编程:Django 基础教程
22 2
|
5天前
|
移动开发 前端开发 JavaScript
快速上手web前端开发(超详细教程)
快速上手web前端开发(超详细教程)