flask框架使用orm连接数据库的方法示例

当使用 Flask 框架时,ORM(对象关系映射)是连接数据库的一个好选择。 SQLAlchemy 是一个流行的 ORM 库,它提供了方便的 ORM 接口,可以让我们更轻松地在 Flask 中使用数据库。

下面我们来讲解一下 Flask 框架使用 ORM 连接数据库的方法示例。

环境设置

在使用 Flask 和 SQLAlchemy 之前,我们需要安装 Python 以及 Flask 和 SQLAlchemy。可以使用以下命令安装 Flask 和 SQLAlchemy:

pip install flask
pip install sqlalchemy

在安装完毕后,我们可以导入这两个库:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

配置 Flask 应用

下一步是配置 Flask 应用。具体地说,我们需要:

  1. 创建 Flask 实例
  2. 设置数据库 URI
  3. 创建 SQLAlchemy 实例
  4. 将 SQLAlchemy 与 Flask 应用连接起来

首先,我们创建 Flask 实例:

app = Flask(__name__)

接下来,我们需要设置数据库 URI。URI(Uniform Resource Identifier)是一个指向数据库的 URL,它可以唯一地识别一个数据库。

在本例中,我们使用 MySQL 数据库。在设置数据库 URI 时,需要包括用户名,密码,主机名,端口和数据库名。示例代码如下:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@hostname:port/databasename'

请注意,这里的“username”和“password”应替换为实际的用户名和密码,而“hostname”和“port”应替换为实际的主机名和端口。最后,“databasename”应替换为实际的数据库名。

接下来,我们需要创建 SQLAlchemy 实例并将其与 Flask 应用连接起来:

db = SQLAlchemy(app)

定义模型

接下来,我们需要定义一个模型来表示数据库中的表。在本例中,我们将创建一个名为“User”的表,其中包含“id”和“name”字段。

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)

这里,“db.Model”是 SQLAlchemy 中的基类,表示一个模型类。然后,我们定义了两个类变量:“id”和“name”,并使用了两个元组来设置它们的属性。

在我们定义完模型之后,我们需要执行下面的命令来创建数据库表:

db.create_all()

实现数据操作

在我们成功定义了数据库模型之后,我们可以开始实现对数据库的操作。下面是两个示例:

示例 1:插入和查询数据

在这个示例中,我们将向数据库中添加一条数据,然后从数据库中查询该数据,并将其打印到控制台上。

# 创建 User 对象
user = User(name='wupc')

# 将 User 对象添加到数据库
db.session.add(user)
db.session.commit()

# 从数据库中查询 User 对象
user = User.query.filter_by(name='wupc').first()

# 打印 User 对象的属性
print(user.id)
print(user.name)

在这个示例中,我们首先创建了一个具有“name”属性的 User 对象。然后,我们使用“db.session.add()”将其添加到数据库中,并使用“db.session.commit()”提交事务。

接下来,我们使用“User.query.filter_by()”查询具有“name”属性的 User 对象,并将其保存在一个名为“user”的变量中。最后,我们打印了“user”的 ID 和名称属性。

示例 2:更新和删除数据

在这个示例中,我们将从数据库中查询一条数据,然后更新其“name”属性。然后,我们将该数据从数据库中删除。

# 从数据库中查询 User 对象
user = User.query.filter_by(name='wupc').first()

# 更新 User 对象的属性
user.name = 'wupc2'
db.session.commit()

# 从数据库中删除 User 对象
db.session.delete(user)
db.session.commit()

在这个示例中,我们首先使用“User.query.filter_by()”查询具有“name”属性的 User 对象,并将其保存在一个名为“user”的变量中。

然后,我们更新了“user”的“name”属性,使用“db.session.commit()”提交了事务。最后,我们使用“db.session.delete()”从数据库中删除了“user”的对象,并再次使用“db.session.commit()”提交了事务。

手动关闭数据库连接

在使用 SQLAlchemy 连接数据库时,我们需要手动关闭连接以防止资源泄漏。我们可以在 Flask 应用关闭时自动关闭 SQLAlchemy 连接。

@app.teardown_appcontext
def shutdown_session(exception=None):
    db.session.remove()

在这个代码片段中,“@app.teardown_appcontext”叫做装饰器,可以在 Flask 应用上下文结束时调用其下面的函数。“shutdown_session()”函数将关闭 SQLAlchemy 连接。

以上就是 Flask 框架使用 ORM 连接数据库的方法示例。通过这些步骤,我们可以很容易地在 Flask 应用程序中使用 SQLAlchemy 连接到数据库,并执行各种 CRUD 操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask框架使用orm连接数据库的方法示例 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Python flask框架实现查询数据库并显示数据

    下面是Python Flask框架实现查询数据库并显示数据的完整攻略。 准备工作 安装Python和Flask框架 安装数据库(这里以MySQL为例)并创建相应的数据库和表 安装MySQL数据库连接工具(这里以pymysql库为例) 示例1:查询数据库并显示数据 步骤1:导入库 from flask import Flask import pymysql 步…

    Flask 2023年5月16日
    00
  • 龙腾世纪审判DLC入侵者新装备与技能介绍

    龙腾世纪审判DLC入侵者新装备与技能介绍攻略 简介 本攻略将向玩家介绍龙腾世纪审判DLC入侵者新增的装备和技能,以帮助我们在游戏中更好地战斗和生存。 新装备介绍 1. 恶魔猎手头饰 恶魔猎手头饰是一项新装备,能够增加恶魔猎人的战斗能力。玩家可以在游戏的商店中购买或通过特定任务获得。这个头饰拥有以下属性: 属性:防御力+50 技能:恶魔猎杀 描述:对恶魔的攻击…

    Flask 2023年5月16日
    00
  • Python的Flask框架中实现分页功能的教程

    下面是实现Python的Flask框架中实现分页功能的教程: 1. 使用Flask_Paginate库实现分页功能 Flask_Paginate是一个小巧而灵活的库,可以方便地实现分页功能。以下是实现分页的步骤: 安装Flask_Paginate pip install Flask-Paginate 导入Flask_Paginate并定义分页函数 from …

    Flask 2023年5月15日
    00
  • flask的orm框架SQLAlchemy查询实现解析

    下面我会详细讲解如何使用flask中的ORM框架SQLAlchemy进行查询,并附上两个示例。 一、什么是ORM框架? ORM (Object-Relational Mapping) 是对象关系映射的缩写,是指通过将数据库中的关系数据转换为对象模型,将程序中的对象模型通过映射转换成关系数据。本质上,ORM框架是一种工具,用于连接Python对象和数据库表之间…

    Flask 2023年5月15日
    00
  • Python flask框架如何显示图像到web页面

    下面是Python Flask框架如何显示图像到web页面的完整攻略。 1. 引入必要的包和文件 首先,在你的Python Flask项目中引入以下必要的包和文件: from flask import Flask, render_template, url_for, send_file import matplotlib.pyplot as plt impo…

    Flask 2023年5月16日
    00
  • 详解 python logging日志模块

    详解 Python logging 日志模块 简介 Python logging 模块是一个强大且灵活的记录日志的模块,它允许你在你的 Python 应用程序中执行大规模的日志记录,并在日志消息的不同级别中进行分类和过滤。使用 Python logging 模块可以有效地记录调试信息、错误和异常信息、警告、信息等。 Python logging 模块支持以下…

    Flask 2023年5月16日
    00
  • python爬取NUS-WIDE数据库图片

    下面为您介绍“python爬取NUS-WIDE数据库图片”的完整攻略,包含两条示例说明。 简介 NUS-WIDE是一个包含269,648张图片的数据库,图片来源于Flickr社交网站。这些图片被手工标注为38个不同的标签。这个数据库可以用于图像检索、多标签分类、语义注释等领域的研究。 在使用NUS-WIDE数据库进行研究时,我们通常需要把图片下载到本地。本文…

    Flask 2023年5月15日
    00
  • Python如何通过Flask-Mail发送电子邮件

    下面是关于Python如何通过Flask-Mail发送电子邮件的完整攻略及示例说明: 一、Flask-Mail简介 在使用 Flask 框架时,我们需要使用 Flask-Mail 扩展来发送邮件。Flask-Mail 扩展可以方便地实现邮件发送功能。 Flask-Mail 扩展是 Flask 对邮件处理库Flask-Mail 的包装器。Flask-Mail …

    Flask 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部