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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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 存储一个任意大的二进制数据


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
25天前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
1月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
|
2月前
|
网络安全 开发工具 数据安全/隐私保护
|
1月前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
83 2
|
1月前
|
API 数据库 开发者
深度剖析Django/Flask:解锁Web开发新姿势,让创意无限延伸!
在Web开发领域,Django与Flask如同两颗璀璨的星辰,各具特色。Django提供全栈解决方案,适合快速开发复杂应用;Flask则轻量灵活,适合小型项目和API开发。本文通过问答形式,深入解析两大框架的使用方法和选择策略,助你解锁Web开发新技能。
46 2
|
2月前
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
126 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
|
1月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
1月前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
113 2
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 1
|
1月前
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API