详解Flask数据库的连接与使用

yizhihongxing

为了详细讲解Flask数据库的连接与使用的攻略,我们需要分为以下几个步骤:

1. 安装Flask扩展

在使用Flask之前,我们需要先安装一些必要的扩展。对于连接数据库来说,常用的扩展是Flask-SQLAlchemyFlask-MySQLdb

pip install flask_sqlalchemy
pip install flask-mysqldb

2. 建立数据库连接

在代码中,我们需要先创建一个数据库连接。可以通过如下方式创建一个连接:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@ipaddr:port/db_name'
db = SQLAlchemy(app)

其中,usernamepassword分别是数据库账号和密码,ipaddr是数据库地址,port是端口号,db_name是要连接的数据库名称。

如果要使用sqlite数据库,则可以按照如下方式创建连接:

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'

3. 定义数据模型

在Flask中使用数据库,我们需要定义数据模型。可以通过继承db.Model类来定义数据模型。例如,我们定义一个User模型来存储用户信息:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

上述代码中,User模型继承了db.Model类,定义了idusernameemailpassword四个字段。

4. 数据库迁移

当我们定义数据模型后,我们需要对数据库进行迁移。可以使用Flask-Migrate扩展来实现数据库迁移。常用的命令有:

# 初始化
flask db init
# 生成迁移脚本
flask db migrate
# 执行迁移脚本
flask db upgrade

5. 数据库操作

在数据库连接和数据模型定义完成后,我们可以进行数据库操作了。具体操作包括增删改查,例如:

user = User(username='test', email='test@test.com', password='123456')
db.session.add(user)
db.session.commit()

上述代码中,我们创建了一个User对象,并添加到数据库中。

user = User.query.filter_by(username='test').first()
user.email = 'new_email@test.com'
db.session.commit()

上述代码中,我们通过filter_by方法查询了一个username为test的用户,并对其邮箱地址进行修改。

6. 示例说明

在以上步骤完整的基础上,我们进一步给出两个示例进行说明。

示例一

假设我们要实现一个用户认证系统。用户注册时需要提供用户名、邮箱和密码,我们使用MySQL数据库存储用户信息。

from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@ipaddr:port/db_name'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

@app.route('/register', methods=['POST'])
def register():
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')
    if not username or not email or not password:
        return '参数错误'
    user = User(username=username, email=email, password=password)
    db.session.add(user)
    db.session.commit()
    return '注册成功'

if __name__ == '__main__':
    app.run()

上述代码中,我们定义了一个/register路由,用户在该路由下发送POST请求时,将注册信息保存到数据库中。

示例二

假设我们要实现一个博客网站。博客文章需要分页展示,我们使用SQLite数据库存储文章信息。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
db = SQLAlchemy(app)

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80), nullable=False)
    body = db.Column(db.Text, nullable=False)

@app.route('/blog')
def blog():
    page = request.args.get('page', default=1, type=int)
    per_page = 10
    pagination = Post.query.order_by(Post.id.desc()).paginate(page=page, per_page=per_page)
    posts = pagination.items
    return render_template('blog.html', posts=posts, pagination=pagination)

if __name__ == '__main__':
    app.run()

上述代码中,我们定义了一个/blog路由,该路由下展示博客文章列表。我们使用Post.query.order_by(Post.id.desc())查询文章,并使用pagination = Post.query.paginate(page=page, per_page=per_page)进行分页。

以上就是Flask数据库的连接与使用的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Flask数据库的连接与使用 - Python技术站

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

相关文章

  • Python安装和配置uWSGI的详细过程

    以下是“Python安装和配置uWSGI的详细过程”的完整攻略。 安装Python 下载Python的最新版本,可以从官方网站 https://www.python.org/downloads/ 下载,选择对应的操作系统和Python的版本进行下载。 安装Python,双击安装程序,按照提示一步步完成安装过程。 检查是否安装成功,通过运行以下命令来检查Pyt…

    Flask 2023年5月16日
    00
  • flask框架中勾子函数的使用详解

    现在我将为您详细讲解“flask框架中勾子函数的使用详解”的完整攻略,包含两条示例说明。以下是完整攻略: 什么是勾子函数 勾子函数(Hook Function),也叫回调函数(Callback Function),指的是在程序执行不同阶段,程序员预先设定并注册的、可以被主程序调用执行的函数。在 Flask 框架中,所有与请求和响应相关的操作都与 Reques…

    Flask 2023年5月15日
    00
  • Flask入门教程实例:搭建一个静态博客

    下面是针对“Flask入门教程实例:搭建一个静态博客”的完整攻略。 1. 确保系统已经具备Python环境 在开始构建一个Flask应用程序之前,我们需要确保系统已经安装并配置好了Python环境。Python的版本推荐使用最新的稳定版本,如Python3.8或Python3.9。如果您还没有安装Python,可以在Python官网下载对应平台的安装包进行安…

    Flask 2023年5月15日
    00
  • Vue+Flask实现简单的登录验证跳转的示例代码

    下面是“Vue+Flask实现简单的登录验证跳转的示例代码”的完整攻略,包含两个示例说明。 示例一 前端部分(Vue) 在前端部分,我们需要使用 axios 进行登录请求。登录成功后我们将会在 cookie 中存储 token,以便随后的访问都可以带上该 token。 <template> <form> <input v-mod…

    Flask 2023年5月16日
    00
  • Flask中Cookie和Session理解与作用介绍

    Flask中的Cookie和Session是处理Web应用程序认证和授权的两种重要机制。本文将详细讲解Flask中Cookie和Session的理解与作用,并介绍它们的具体应用。 1. Flask中的Cookie 1.1 Cookie的介绍 Cookie是存储在客户端的小型文本文件,由服务器提供,在服务器和浏览器之间传递。Cookie通常用于内容管理系统的用…

    Flask 2023年5月15日
    00
  • Flask 路由(Route)使用方法详解

    Flask是一种轻量级的Python Web框架,它简单易用,适合快速开发小型Web应用。其中路由(Route)是Flask Web应用中最重要的部分,它可以帮助我们管理 URL 请求和响应,本文将详细介绍Flask路由的使用方法,并提供完整的代码示例。 Flask 路由的基本使用方法 我们可以通过在Flask应用实例上定义路由函数,来处理不同的URL请求。…

    Flask 2023年3月13日
    00
  • python3 property装饰器实现原理与用法示例

    Property装饰器是Python中一个强大的工具,可以让我们在代码中访问属性值时加入更多的逻辑或者限制。本文将详细介绍Python3中property装饰器的实现原理和用法,并提供两个实例说明。 Property装饰器的实现原理 Python中的@property装饰器是一个装饰器工厂函数,它返回一个特殊的描述器对象。通过向类中添加这个描述器,我们可以控…

    Flask 2023年5月16日
    00
  • flask+layui+echarts实现前端动态图展示数据效果

    下面是使用Flask、LayUI和ECharts实现前端动态数据展示效果的完整攻略,包含两个示例。 步骤一:安装并配置Flask 安装Flask:在命令行窗口中输入pip install Flask即可安装。 创建Flask应用:在项目文件夹中创建一个名为app.py的Python文件,并编写代码: “`python from flask import F…

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