Flask 配置Python Flask应用程序使用“create_app”工厂和在模型类中使用数据库

Flask 配置Python Flask应用程序使用“create_app”工厂和在模型类中使用数据库

在本文中,我们将介绍如何配置Python Flask应用程序,以使用“create_app”工厂函数,并在模型类中使用数据库。Flask是一个轻量级的Web框架,可以让我们用简洁的代码构建强大的Web应用程序。使用“create_app”工厂函数可以帮助我们更好地组织和管理应用程序的结构。而在模型类中使用数据库可以让我们轻松地处理数据的持久化与查询。

阅读更多:Flask 教程

配置Python Flask应用程序使用“create_app”工厂

在传统的Flask应用程序中,我们通常将所有的代码都写在一个文件中。这种方式虽然简单,但是在应用程序变得越来越大时,会导致代码难以维护和扩展。为了解决这个问题,我们可以使用“create_app”工厂函数。

from flask import Flask

def create_app():
    app = Flask(__name__)

    # 进行一些初始化设定

    return app

app = create_app()

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

通过上面的代码,我们可以将应用程序的实例化部分和路由部分分离开来。在create_app函数中,我们可以进行一些应用程序的初始化设定,例如数据库的连接、注册蓝图等。然后使用app = create_app()来创建应用程序的实例。这样的话,在其他文件中,我们只需要通过from app import app来获取应用程序的实例即可。

在模型类中使用数据库

Flask并没有自带的数据库模块,但是我们可以借助其他第三方库来实现数据库的操作。常用的数据库库有SQLAlchemy、Flask-SQLAlchemy、Peewee等。在本文中,我们以SQLAlchemy为例,来演示如何在模型类中使用数据库。

首先,我们需要安装SQLAlchemy库。

pip install SQLAlchemy
Bash

然后,在create_app函数中进行数据库的初始化。

from flask_sqlalchemy import SQLAlchemy

def create_app():
    app = Flask(__name__)

    # 连接数据库
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db = SQLAlchemy(app)

    # 其他初始化设定

    return app
Python

上面的代码中,我们使用SQLite作为数据库,并将数据库文件保存在了应用程序的根目录下。使用app.config的方式来配置数据库。

接下来,我们可以定义模型类,并在模型类中使用数据库。

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

    def __repr__(self):
        return f'<User {self.username}>'
Python

在上面的代码中,我们定义了一个名为User的模型类。这个模型类继承自db.Model,即SQLAlchemy提供的基类。通过定义类属性,我们可以定义表的结构。db.Column表示一列,db.Integer表示整型,db.String表示字符串,primary_key=True表示主键,unique=True表示唯一,nullable=False表示不可为空。

在模型类中,我们还可以定义一些其他的方法,例如__repr__方法用于返回一个可读的字符串表示模型对象。

接下来,我们需要在create_app函数中进行数据库的初始化。

from flask_sqlalchemy import SQLAlchemy

def create_app():
    app = Flask(__name__)

    # 连接数据库
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db = SQLAlchemy(app)

    # 注册模型
    db.init_app(app)
    with app.app_context():
        db.create_all()

    # 其他初始化设定

    return app
Python

上面的代码中,我们使用db.init_app(app)将数据库与应用程序绑定起来,并使用db.create_all()创建所有的模型类对应的表。

现在,我们可以在视图函数中使用数据库了。

from flask import Blueprint

users_bp = Blueprint('users', __name__)

@users_bp.route('/')
def index():
    users = User.query.all()
    return f'All users: {users}'
Python

在上面的代码中,我们首先创建了一个蓝图users_bp,然后定义了一个路由/,在这个路由中,我们查询了所有的用户,并将其返回。User.query.all()表示查询所有的用户。可以根据实际需求,使用不同的查询方法来获取用户数据。

最后,我们需要在create_app函数中注册蓝图。

from flask_sqlalchemy import SQLAlchemy

def create_app():
    app = Flask(__name__)

    # 连接数据库
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db = SQLAlchemy(app)

    # 注册模型
    db.init_app(app)
    with app.app_context():
        db.create_all()

    # 注册蓝图
    from app.users.views import users_bp
    app.register_blueprint(users_bp)

    return app
Python

在上面的代码中,我们使用from app.users.views import users_bp来引入蓝图,并使用app.register_blueprint(users_bp)来注册蓝图。

总结

本文介绍了如何配置Python Flask应用程序,使用“create_app”工厂函数和在模型类中使用数据库。通过使用“create_app”工厂函数,我们可以更好地组织和管理应用程序的结构。通过在模型类中使用数据库,我们可以轻松地处理数据的持久化与查询。这些技巧可以帮助我们更好地开发和维护Python Flask应用程序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册