详解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日

相关文章

  • Flask框架响应、调度方法和蓝图操作实例分析

    Flask是一款基于Werkzeug和Jinja2的轻量级Web框架,具有优雅简洁的代码风格、灵活性和可扩展性。在Flask框架中,响应、调度方法和蓝图操作是非常关键的内容,下面我们将对这三个方面进行详细讲解,并分别给出两个实例进行说明。 Flask框架响应 在Flask框架中,响应是指服务器返回给客户端的数据,Flask框架内置了多种响应类型,如HTML页…

    Flask 2023年5月15日
    00
  • Flask中提供静态文件的实例讲解

    下面是“Flask中提供静态文件的实例讲解”的完整攻略: 提供静态文件的方法 Flask中提供静态文件,主要是使用Flask应用对象的static_folder和static_url_path参数。其中,static_folder指定静态文件的存储路径,static_url_path则是静态URL的前缀。默认情况下,static_folder为应用程序的/s…

    Flask 2023年5月16日
    00
  • Python Flask 转换器的使用详解

    介绍 Flask 转换器之前,需要先理解 Flask 中 URL 的基本形式。Flask 的 URL 基本形式为:/path/<variable>/another_path,其中 <variable> 为可变的路由参数,可以根据具体的需求进行设置。 如果 URL 中的参数不是想要的类型,那么我们需要转换器。常见的转换器包括 int、f…

    Flask 2023年5月16日
    00
  • JQuery异步post上传表单数据标准化模板

    JQuery异步post上传表单数据标准化模板是一种常用的前端技术。本攻略将详细讲解此过程,并提供两条示例说明。具体步骤如下: 一、设置请求 url 和 data 请求 url 可以指向一个后台处理请求的页面。 data 是现有表单的序列化数据和其他要提交的数据的对象。对象的主要属性应与表单中的输入字段的“name”属性匹配。 二、设置异步ajax请求 设置…

    Flask 2023年5月16日
    00
  • python使用reportlab生成pdf实例

    下面是生成PDF文件的完整攻略。 1. 环境准备 在使用ReportLab生成PDF之前,需要先安装ReportLab库,可以使用pip命令进行安装,具体操作如下: pip install reportlab 2. 基本应用 下面通过两个示例,分别讲解ReportLab库的基础使用。 示例1 在本示例中,我们将使用ReportLab库创建一个简单的PDF文件…

    Flask 2023年5月16日
    00
  • Python使用Flask框架同时上传多个文件的方法

    Python使用Flask框架同时上传多个文件的方法需要以下步骤: 1. 创建HTML表单 HTML表单需要添加enctype属性,值是multipart/form-data,表示表单数据同时包含文本和二进制数据(文件)。表单中使用input标签的type属性为file的元素来让用户选择需要上传的文件,如下所示: <form action="…

    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 实现上传图片并缩放作为头像的例子

    这里有两个示例说明:实现在 Flask 应用中上传图片并缩放作为头像。 示例 1:上传图片并保存到本地 from flask import Flask, request, redirect from werkzeug.utils import secure_filename app = Flask(__name__) app.config[‘UPLOAD_F…

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