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

为了详细讲解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 flask框架实现查询数据库并显示数据

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

    Flask 2023年5月16日
    00
  • Python Flask的request对象使用详解

    下面我将详细讲解Python Flask的request对象使用详解的完整攻略,包括两条示例说明。 简介 Flask是一个轻量级Web框架,提供了一个简单易懂的API,使得进行Web开发非常容易。Flask中的request对象提供了方便的方式来获取HTTP请求数据。 获取请求参数 在Flask中,可以使用request.args属性来获取GET请求中的参数…

    Flask 2023年5月15日
    00
  • Python flask框架post接口调用示例

    下面是“Python Flask框架POST接口调用示例”的完整攻略: 1. 确保flask和requests已安装 在开始之前,需要确保flask和requests已安装。如果没有安装可以在命令行中使用以下命令进行安装: pip install flask pip install requests 2. 创建Flask应用程序 创建一个Python脚本ap…

    Flask 2023年5月15日
    00
  • Flask与SMTP协议邮件扩展问题

    Flask是一个使用Python编写的轻量级Web应用程序框架,而SMTP是一个用于电子邮件传输的协议。当我们需要在Flask应用程序中发送邮件时,可以使用SMTP协议邮件扩展。 下面是Flask与SMTP协议邮件扩展的详细攻略。 1.安装Flask邮件扩展 在Flask应用程序中使用邮件扩展,我们需要先安装相应的Flask邮件扩展。常用的Flask邮件扩展…

    Flask 2023年5月16日
    00
  • python中Flask Web 表单的使用方法介绍

    下面是 Python 中 Flask Web 表单的使用方法介绍: Flask Web 表单 Flask Web 表单(Flask Web Forms)是 Flask 框架的一个扩展,它提供了简单易用的 API 来处理 Web 表单。使用 Flask Web 表单,可以轻松地编写处理用户表单的代码并实现表单验证。 安装 Flask Web 表单 安装 Fla…

    Flask 2023年5月15日
    00
  • Flask模板引擎之Jinja2语法介绍

    Flask模板引擎之Jinja2语法介绍 在Flask中,Jinja2是为构建动态web应用程序提供的一个模板引擎,可以轻松地将应用程序与HTML(或其他文本)集成,并在呈现页面之前修改动态内容。 变量 在Jinja2中,使用双大括号来包含变量名,如 {{ variable_name }}。 <!DOCTYPE html> <html&gt…

    Flask 2023年5月15日
    00
  • 用sqlalchemy构建Django连接池的实例

    首先,需要明确一点,sqlalchemy是Python中最流行的ORM(对象关系映射器)之一,而Django最常用的ORM是自带的ORM。虽然可以通过某些方式让Django使用sqlalchemy,但是在大部分情况下直接使用Django自带的ORM是更好的选择。所以,以下将介绍如何使用Django自带的ORM来构建连接池。 安装数据库连接池 在Python中…

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

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

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