详解Flask连接数据库

随着互联网的快速发展,Web应用程序已经成为人们最为熟悉的应用程序之一。而Flask是Python中一个轻量级的Web框架,它的简洁性和易扩展性使得它成为了开发Web应用程序的重要工具之一。在Flask开发中,连接数据库是一个必不可少的环节。本文将从多个方面对Flask连接数据库做详细的阐述。

一、Flask连接数据库并可视化

在Flask中,我们可以使用多种数据库,比如SQLite、MySQL和PostgreSQL等。下面,我们以SQLite为例,对Flask连接数据库进行讲解。

首先,需要通过pip安装相关依赖库。比如,在Windows下安装SQLite3:

!pip install sqlite3

接下来,我们需要在Flask应用程序中配置数据库。具体代码如下:

from flask import Flask, abort, request, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

上述代码中,我们首先导入了Flask库和SQLAlchemy库。然后,我们创建了一个app对象和一个db对象。最后,我们配置了数据库连接的URI和关闭了在数据库修改时发送信号到应用程序的跟踪功能。具体地,’sqlite:///test.db’表示连接到名为test的SQLite数据库。需要注意的是,这个test.db文件会被存储在当前文件夹中。

接下来,我们可以用db对象定义模型,定义之后我们就可以像sqlalchemy一样使用增、删、改、查等操作。定义模型的代码如下:

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

def to_dict(self):
return {
'id': self.id,
'name': self.name,
'email': self.email
}

上述代码中,我们定义了一个User模型,包括id、name和email三个属性。其中,id为整型,为主键;name和email为字符串类型,不能为空。另外,我们还定义了一个to_dict函数,用于将模型数据转换成字典格式。

最后,我们需要将模型应用到数据库中。具体代码如下:

@app.route('/user', methods=['POST'])
def create_user():
name = request.json.get('name')
email = request.json.get('email')
if not name or not email:
abort(400)
user = User(name=name, email=email)
db.session.add(user)
db.session.commit()
return jsonify(user.to_dict()), 201

上述代码中,我们使用POST方法请求应用路由’/user’,并将用户名和邮箱地址传递到函数中。如果用户名或邮箱为空,就会返回状态码400;否则,将用户名和邮箱地址注入到User模型中,并用add和commit方法将其添加到数据库中。

至此,我们已经成功地连接了SQLite数据库,并实现了数据增加功能。

二、Flask数据库迁移

在Flask的Web应用程序开发中,当我们需要对我们的数据库进行结构变更时,Flask提供了一个叫做Flask-Migrate的库,可以方便地进行数据库迁移。Flask-Migrate的简单使用步骤如下:

1、安装Flask-Migrate

!pip install flask-migrate

2、初始化数据库迁移环境

flask db init

3、生成迁移脚本

flask db migrate -m "add fields to user model"

4、应用迁移脚本

flask db upgrade

5、回滚迁移

flask db downgrade

上述步骤中,我们使用了Flask-Migrate提供的命令行工具,简单完成了数据库迁移的操作。

三、Flask链接数据库失败重试

在Flask开发中,由于网络或服务器原因,连接数据库时有可能会失败。为了避免这种情况,我们需要实现一种Flask链接数据库失败重试的方法。具体代码如下:

import time

def get_db_retry(db_url, retry=3):
tried = 0
db = None
while tried < retry:
try:
db = SQLAlchemy()
db.init_app(app)
db.session.execute('SELECT 1')
break
except:
if not db:
print("DB not started yet.", tried)
time.sleep(1)
db = None
tried += 1
else:
db = None
tried += 1
return db

上述代码中,我们定义了一个名为get_db_retry的函数,用于在Flask中重试连接数据库。我们传入一个db_url和重试次数retry,利用SQLAlchemy的init_app()方法初始化数据库连接,然后使用execute()方法查询。如果执行成功,则返回db对象;否则,重试retry次数。

四、Flask数据库在哪

在Flask应用程序中,数据库文件被存储在应用程序配置的文件夹下。具体路径可以使用Flask的config环境变量及当前工作目录变量中的DATABASE_URI来指定。比如,我们可以在Flask应用程序中这样配置:

from os import path

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

在上述代码中,我们将数据库文件存放在当前文件夹中,并将其命名为data.sqlite。

五、Flask中数据库插入数据

在Flask应用程序中,我们使用SQLAlchemy向数据库插入数据时,具体操作如下:

db.session.add(user)
db.session.commit()

上述代码中,我们将user对象注入到session中,并通过commit()方法将其添加到数据库中。

结束语

本文主要从Flask连接数据库并可视化、Flask数据库迁移、Flask链接数据库失败重试、Flask数据库在哪以及Flask中数据库插入数据几个方面,对Flask连接数据库进行了详细的阐述。希望本文的内容对读者能够有所帮助。

原创文章,作者:QDEP,如若转载,请注明出处:https://www.506064.com/n/137970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
QDEP的头像QDEP
上一篇 2024-10-04 00:18
下一篇 2024-10-04 00:18

相关推荐

  • 做Python的Flask开发,必须安装PyCharm

    PyCharm是一款专业的Python集成开发环境(IDE),适用于Flask、Django等Web开发框架,提供了强大的代码编辑、调试和版本控制等功能,大大提高了开发效率和代码质…

    编程 2025-04-29
  • 使用Python Flask和Echarts展示疫情数据

    这篇文章将介绍如何使用Python Flask和Echarts制作一个能够展示疫情统计数据的网页。 一、安装依赖库 首先,需要安装Python Flask和Echarts的依赖库。…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25

发表回复

登录后才能评论