iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Flask数据库集成的介绍
  • 825
分享到

Flask数据库集成的介绍

2024-04-02 19:04:59 825人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、使用flask-sqlAlchemy管理数据库1.1 配置Flask_SQLAlchemy1.2 定义数据库模型1.3 创建数据库和表1.4 数据库操作1.4.1 Creat

前言:

数据库是大多数 WEB 应用的基础设施,只要想把数据存储下来,就离不开数据库,下面将一起学习一下如何给 Flask 应用添加数据库支持。

1、使用Flask-SQLAlchemy管理数据库

Flask-SQLAlchemy 集成了 SQLAlchemy,它简化了连接数据库服务器、管理数据库及操作会话等各类工作,让 Flask 更方便的进行数据存储及处理,我们不必过多关心原生 SQL 语句,只需要使用 python 类就可以轻松的完成对数据库表的增删改查操作,并且该插件还支持多种数据库类型,如Mysqlpostgresql、和SQLite等。

我们可以使用pip install flask-sqlalchemy进行安装。

1.1 配置Flask_SQLAlchemy

下面以 SQLite 数据库为例,Flask-SQLAlchemy 数据库的 url 通过配置变量SQLALCHEMY_DATABASE_URI指定,通过 Flask-SQLAlchemy 提供的 SQLAlchemy 类传入 Flask 的实例 app,创建 db 实例,表示程序使用的数据库,这个 db 对象能够使用 Flask-SQLAlchemy 的所有功能。


from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

basedir = os.path.abspath(app.root_path)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.db')

app.config['SQLALCHEMY_TRACK_MODIFICATioNS'] = False

db = SQLAlchemy(app)

其中,SQLALCHEMY_TRACK_ MODIFICATIONS配置变量表示是否追踪对象的修改,在此设为False

1.2 定义数据库模型

所谓数据模型,就是用来映射数据库表的 Python 类,一个数据模型类对应数据库中的一个表,类的属性代表数据库表的字段。所有的模型类都需要继承 Flask-SQLAlchemy 提供db.Model基类。

新建model.py文件,定义User类如下:


from app import db

class User(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    user_name = db.Column(db.String)

    passWord = db.Column(db.String)

1.3 创建数据库和表

运行 Flask 应用,然后在终端中输入flask shell命令,进入 Python 交互环境

如下所示:


>>> from app import db  # 从app.py中导入db实例

>>> from model import *  # 从model.py中导入所有模型类

>>> db.create_all()  # 用db.create_all()创建数据库表 

执行完之后,会在项目根目录生成一个data.db库文件。 注意: 数据库和表一旦创建后,之后对模型类的改动不会自动作用到实际的表中,比如,在模型类中添加或删除字段,修改字段的名称和类型,再次调用db.create_all()不会重新创建表或是更新表,只有通过db.drop_all()删除数据库中所有的表之后再调用db.create_all()才能重新创建表,

那么就会出现这么一个问题:

这样操作的话,数据库表被删除重建了,那表中原有的数据也都没有了,这肯定是不行的,这时就出现了数据库迁移的概念,先留个坑,下篇文章介绍。

1.4 数据库操作

现在我们创建了模型,也生成了数据库和表,接下来就来学习一下常用的数据库操作。数据库操作主要是CRUDCreate 创建、Read 读取/查询、 Update 更新、Delete 删除)。

1.4.1 Create

添加一条记录到数据库中,主要分为以下三步:

  • 使用 Python 模型类创建对象作为一条记录
  • 添加新创建的对象到数据库会话中
  • 提交数据库会话

如下,在上面的交互环境下,创建一个新用户:


>>> from app import db  # 从app.py中导入db实例

>>> from model import User   # 导入模型类User

>>> user1=User(user_name='tigeriaf', password='123456')  # 创建用户1

>>> user2=User(user_name='admin', password='123456')  # 创建用户2

# 添加新创建的对象到数据库会话中

>>> db.session.add(user1)

>>> db.session.add(user2)

# 将数据库会话提交,数据写入data.db文件

>>> db.session.commit()

# 测试

>>> print(user1.id)

1

>>> print(user2.id)

2

另外,除了依次调用add()方法添加记录,也可以使用add_all()一次添加包含多个模型类对象的列表。

1.4.2 Read

使用模型类

提供的 query 属性 通过模型类提供的 query 属性附加调用各种过滤方法可以查询数据库表的数据,

查询模式如下:

<模型类>.query.<过滤方法>.<查询方法>

从某个模型类出发,通过在 query 属性对应的 Query 对象上附加的过滤方法和查询函数对模型类对应的表中的记 进行各种筛选等,最终返回包含对应数据库记录数据的模型类实例,对返回的实例调用属性即可获取对应的字段数据。


# 查询全部

>>> User.query.all()

[<User 1>, <User 2>]

# 查询指定id的记录

>>> user1=User.query.get(1)

>>> user1.user_name

'tigeriaf'

# 查询条数

>>> User.query.count()

2

# 查询user_name为admin的用户

>>> User.query.filter_by(user_name='admin').all()

[<User 2>]

SQLAlcherny 提供了很多过滤方法,使用这些过滤方法可以获取更精确的查询,这里就不展开了。 完整的查询、过滤方法可以查看:The Query Object

1.4.3 Update

更新一条记录非常简单,直接给模型类的属性附上新的值,然后调用commit()方法提交会话即可。 如下,修改 id 2 的用户的用户名 user_name


>>> user2=User.query.get(2)

>>> user2.user_name

'admin'

>>> user2.user_name='张三'

>>> db.session.commit()

>>> user2.user_name

'张三'

1.4.4 Delete

使用delete()进行数据记录的删除,如下:


>>> db.session.delete(user2)

>>> db.session.commit()

>>> user2=User.query.get(2)

>>> print(user2)

None

1.4.5 在视图函数里操作数据库

在视图函数里操作数据库的方式在 Python Shell 交互环境下大致是相同的,无非就是多了从请求对象获取数据及验证数据的步骤,

如下一个案例:


@app.route('/user', methods=['GET', 'POST'])

def user():

    if request.method == 'POST':

        user_name = request.fORM['user_name']

        password = request.form['password']

        user = User(user_name=user_name, password=password)

        db.session.add(user)

        db.session.commit()

        return 'user:{} add success! id:{}'.format(user_name, user.id)

    else:

        user_id = request.args.get('user_id')

        user = User.query.get(user_id)

        if user:

            return 'Hello user:{}!'.format(user.user_name)

        else:

            return 'failed'

上述代码中,视图函数 user 接受两种方式的请求,分别完成添加用户、查询用户的功能,将接收数据存储在数据库中。

发送请求测试如下:

到此这篇关于 Flask 数据库集成的介绍的文章就介绍到这了,更多相关 Flask 数据库集成内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Flask数据库集成的介绍

本文链接: https://www.lsjlt.com/news/158461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Flask数据库集成的介绍
    目录1、使用Flask-SQLAlchemy管理数据库1.1 配置Flask_SQLAlchemy1.2 定义数据库模型1.3 创建数据库和表1.4 数据库操作1.4.1 Creat...
    99+
    2024-04-02
  • Kubernetes集群的组成介绍
    Kubernetes集群的组成 我们谈起 Kubernetes 和应用部署时,往往会涉及到容器、节点、Pods 等概念,还有各种术语,令人眼花缭乱。为了更好地摸清 Kubernete...
    99+
    2024-04-02
  • Elasticsearch 介绍及java集成
    一、Elasticsearch 基础介绍 ElasticSearch 是分布式实时搜索、实时分析、实时存储引擎,简称(ES), 成立于2012年,是一家来自荷兰的、开源的大数据搜索、分析服务提供商,为企业提供实时搜索、数据分析服务,支持PB...
    99+
    2023-09-23
    elasticsearch java 大数据
  • SpringBoot集成Redis的过程介绍
    本篇文章和大家了解一下SpringBoot集成Redis的过程介绍。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Redis 介绍: Redis 服务Redis (REmote Dictionary Server) 是一个...
    99+
    2023-06-15
  • BCI Competition IV 2a数据集介绍
    前言 本文是在结合了官方的英文介绍以及各大佬的讲解之后,根据我的个人理解整理出的关于BCICIV 2a数据集的简介,如有错误还请指正。 相关链接如下: 数据集下载链接(.gdf文件版本) 数据集下载链...
    99+
    2023-10-01
    python matplotlib
  • MySQL数据库的概念介绍
    本篇内容主要讲解“MySQL数据库的概念介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的概念介绍”吧!1.数据库概念数据库(Database)是按照数据结构来组织、存储和管理...
    99+
    2023-06-02
  • Redis数据库的简单介绍
    这篇文章给大家分享的是有关Redis数据库的简单介绍的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。1.Redis数据库介绍redis数据库是一种基于内存可持久化的键值对非关系性数...
    99+
    2024-04-02
  • ceRNA数据库的简单介绍
    这篇文章主要介绍“ceRNA数据库的简单介绍”,在日常操作中,相信很多人在ceRNA数据库的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ceRNA数据库的简单介绍”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-19
  • MySQL数据库的权限介绍
    本篇内容介绍了“MySQL数据库的权限介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MySQL权限介绍...
    99+
    2024-04-02
  • 阿里云采集数据库的详细介绍及位置
    阿里云采集数据库是阿里云自主研发的一款数据库系统,其主要应用于数据存储和管理。它能够为用户提供高效、稳定的数据库服务,满足用户对于数据存储和管理的各种需求。在这篇文章中,我们将详细说明阿里云采集数据库的具体位置以及其使用方法。 阿里云采集数...
    99+
    2023-12-18
    阿里 详细介绍 位置
  • 数据库:MYSQL参数max_allowed_packet 介绍
    1、参数作用 max_allowed_packet参数是指mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。 2、问题场景 ● 有时候业务的需要,可能会存在某...
    99+
    2023-09-16
    adb 前端
  • Imagenet2012数据集下载、介绍(推荐)
    目录1、下载2、介绍最近研究可能会用到该数据集,发现过去好多分享的官网下载链接已经失效,找了很久才找到了网盘的数据集。 1、下载 链接: https://pan.baidu.com/...
    99+
    2024-04-02
  • Flask数据库
    一 数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行数是可变的。它使用结构化的查询语言。关系型数据库的列定义了表中表示的实体的数据属性。比如:商品表...
    99+
    2023-01-31
    数据库 Flask
  • Springboot集成Camunda使用Mysql介绍
    目录一、匹配版本二、相关配置总结一、匹配版本 基于Camunda 7.16.0 + Springboot 2.5.8 首先我们去官网找到camunda7.16对应的springboo...
    99+
    2024-04-02
  • SpringBoot集成RabbitMQ和概念介绍
    目录一、RabbitMQ介绍二、相关概念三、简单使用1.配置pom包2.配置文件3.队列配置4.发送者5.接收者6.测试四、高级使用1.Topic Exchange2.Fanout ...
    99+
    2024-04-02
  • 数据库安全知识介绍
    数据库系统是在操作系统平台之上的最重要的系统软件,数据库系统的安全可以说是十分重要的。曾经有句话这样说:如果网络遍地是金钱,那么金钱就在数据库服务器中。随着无纸化业务环境的不断扩大,人们在数据库中存储着越...
    99+
    2024-04-02
  • seata的部署和集成详细介绍
    目录seata的部署和集成1.部署Seata的tc-server1)下载2)解压3)修改配置4)在nacos添加配置5)创建数据库表6)启动TC服务2.微服务集成seata 1)引入...
    99+
    2023-05-15
    Java seata部署和集成 seata部署 seata集成
  • Oracle数据库常用数据类型介绍
    Oracle数据库是一种常用的关系型数据库管理系统,它支持多种数据类型以满足不同的需求。在使用Oracle数据库时,了解数据库的数据类型是非常重要的。本文将介绍Oracle数据库中常用...
    99+
    2024-03-08
    数据类型 oracle 常用
  • 【MySQL】MySQL 数据库的介绍与操作
    目录 1. 登录 MySQL 数据库 2. MySQL 介绍 3. 操作数据库 1、创建数据库 2、删除数据库 3、插入数据 4、查找 5、修改数据库 4. 表的操作 1、创建表 2、查看表 3、修改表 4、删除表 写在最后: 1. 登...
    99+
    2023-08-31
    mysql
  • PHP与数据仓库的集成
    随着互联网和大数据的快速发展,越来越多的企业开始将数据仓库(data warehouse)作为支撑业务发展的重要基础设施。而作为一种流行的编程语言,PHP也逐渐成为了许多企业和组织的首选,那么如何将PHP与数据仓库集成呢?一、数据仓库概述数...
    99+
    2023-05-17
    数据仓库 集成 PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作