Python Flask 模型介绍和配置方法

阿橙
阿橙
发布时间:2026-10-16| 11人浏览过
原创

本文详细讲解 Python Flask 框架中数据模型(M)的配置方法。内容涵盖从安装 pymysql、flask-sqlalchemy 到 flask-migrate 库,通过 ORM 映射建立数据库连接。文章演示了如何定义模型类、配置数据库 URI,并利用 Flask-Migrate 命令初始化、迁移及升级数据库表结构,最后结合注册功能示例展示 MTV 模式的完整整合流程。

Flask 数据模型与数据库连接

Flask 遵循 MTV 架构模式,其中 M 代表 Model(模型),即数据模型,在项目中对应数据库操作。Flask 与数据库建立连接主要有两种方式:一是直接使用 pymysql 进行底层连接;二是采用基于 pymysql 的 ORM(对象关系映射)方式,后者在 Web 开发中更为常见。ORM 通过对象形式映射数据库表,便于数据在页面展示。下文将记录使用 MySQL 和 ORM 方式连接数据库的具体步骤。

一、安装依赖库

准备工作:首先需要安装必要的 Python 库。

pip3 install pymysql        建公路

pip3 install flask-sqlalchemy    实现ORM映射

pip3 install flask-migrate     发布命令工具

二、配置数据库连接及创建模型类

步骤一:配置数据库的连接路径。

# mysql+pymysql://user:password@hostip:port/databasename
# 数据库+pymysql://用户名:密码@主机ip:端口/数据库名
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@127.0.0.1:3306/flaskdemo'

步骤二:搭建 flask-sqlalchemy。在 apps 包下创建 ext 包(通常用于存放第三方库配置),并在其 __init__.py 文件中添加相关代码。

   db = SQLAlchemy()   ---->必须跟app联系

在 apps/__init__.py 文件(此处将 app 启动与初始化分离,该 __init__ 负责 app 初始化)中建立与 app 的联系。

   def create_app():
        ....
        # 跟app联系
        db.init_app(app)

        return app

步骤三:创建模型。在 models.py 中定义模型,模型本质上是类,常被称为模型类。

  class User(db.Model):      ------> user表
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(15), nullable=False)
    password = db.Column(db.String(12), nullable=False)
    phone = db.Column(db.String(11), unique=True)
    rdatetime = db.Column(db.DateTime, default=datetime.now)

常见的字段数据类型包括: Integer 整型 String(size) 字符串类型,务必指定大小 Text 长文本类型 DateTime 日期时间 Float 浮点类型 Boolean 布尔类型 PickleType 存储 pickle 类型,主要涉及序列化 LargeBinary 存储大的二进制类型

可选参数配置: primary_key=True 设置为主键 autoincrement=True 启用自增 nullable=False 不允许为空 unique=True 设置唯一性 default=datetime.now 设置默认值,可设为当前系统时间或其他值

三、使用命令创建数据库表

a. 在 app.py 中导入模型:from apps.user.models import User,使模型与 app 关联。 b. 在终端使用以下命令操作数据库: flask db init:生成 migrations 文件夹 flask db migrate:自动生成版本文件 flask db upgrade:执行同步,完成数据库表创建

     项目结构
      | ---apps
      | ---ext
      | ---migrations    flask db init     只需要init一次
               |---versions   版本文件夹
                    |---71edde7ee937_.py    ---》 flask db migrate  迁移
                    |---cc0dca61130f_.py
                                                  flask  db upgrade 同步
                                                  flask  db downgrade 降级

四、以注册功能为例

1. 创建 app、migrate(绑定 app 和数据库),并通过 app.run 启动入口。

2. 在 apps 文件下 __init__.py 文件中初始化 app 配置。

3. 配置数据库连接信息。

4. 创建模型类。

5. 通过命令创建数据库表: flask db init:生成 migrations 文件夹 flask db migrate:自动生成版本文件 flask db upgrade:执行同步,完成数据库表创建 此时在 PyCharm 的数据库视图中即可看到已创建的数据库表。

6. 编写注册逻辑(视图层)。

# 用户注册
@user_bp.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        repassword = request.form.get('repassword')
        phone = request.form.get('phone')
        email = request.form.get('email')
        if password == repassword:
            # 注册用户
            user = User()
            user.username = username
            # 自定义加密:new_password = hashlib.sha256(password.encode('utf-8')).hexdigest()
            # 使用自带的函数实现加密:generate_password_hash
            user.password = generate_password_hash(password)
            print(len(user.password))
            user.phone = phone
            user.email = email
            # 添加并提交
            db.session.add(user)
            db.session.commit()
            return redirect(url_for('user.index'))
    return render_template('user/register.html')

7. 编写模板即 HTML 页面,即可实现简单的注册功能,完成 MTV 模式的整合。

到此这篇关于 Python Flask 模型介绍和配置方法的文章就介绍到这了,更多相关 Python Flask 模型内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。