前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask Web 极简教程(三)- SqlAlchemy(Part A)

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

作者头像
RiemannHypothesis
发布2022-09-26 16:36:45
7000
发布2022-09-26 16:36:45
举报
文章被收录于专栏:Elixir

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

一、ORM 模型设计

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

ORM的重要特性:

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

SQLAlchemy

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

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

代码语言:javascript
复制
# 依赖
pip3 install mysqlclient
pip3 install Flask-SQLAlchemy

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

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

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

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

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

ORM 模型创建

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

image.png
image.png

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

代码语言:javascript
复制
from flask_sqlalchemy import SQLAlchemy

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

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

代码语言:javascript
复制
# 设计数据库模型
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 ,通过执行以下命令创建表或者删除表

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

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

image.png
image.png

ORM 模型字段类型

字段类型

字段描述

Integer/Float

整数类型/浮点数类型

String(size)

字符串,通过max_lenght指定字符串长度

Text

长文本

DateTime

时间类型,对应datetime

Boolean

布尔类型

PickleType

存储为一个持久化的Python对象

LargeBinary

存储一个任意大的二进制数据

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、ORM 模型设计
    • SQLAlchemy
      • ORM 模型创建
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档