flask sqlalchemy初始化及相关配置

学习flask框架,进行到了sqlalchemy部分,之前花了很久时间才理解怎么使用sqlalchemy,但是都是学到的都是细碎的点,现在系统的学习一下flask sqlalchemy部分。

 

什么是Flask-SQLAlchemy?

Flask-SQLAlchemy是一个flask扩展,简化了操作。SQLAlchemy是一个强大的关系型数据库框架,支持多种数据库后台,提供了高层的ORM,也提供了原生SQL的底层功能。

———Flask Web开发

 

一.基本配置

flask-sqlalchemy 的相关配置也封装到了 flask 的配置项中, 可以通过app.config属性 或 配置加载方案 (如config.from_object) 进行设置

主要配置

数据库URI(连接地址)格式: 协议名://用户名:密码@数据库IP:端口号/数据库名, 如:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost:3306/test'

注意点:
1.如果数据库驱动使用的是 pymysql, 则协议名需要修改为 mysql+pymysql://xxxxxxx
2.sqlalchemy 支持多种关系型数据库, 其他数据库的URI可以查阅

代码示例:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 设置数据库连接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost:3306/test'
# 是否追踪数据库修改(开启后会触发一些钩子函数)  一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

 

二.组件初始化

flask-sqlalchemy 支持两种组件初始化方式:

方式1: 创建组件时, 直接关联Flask应用

# 方式1: 初始化组件对象, 直接关联Flask应用
db = SQLAlchemy(app)

方式2: 先创建组件, 延后关联Flass应用

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


# 方式2: 初始化组件对象, 延后关联Flask应用
db = SQLAlchemy()

def create_app(config_type):
    """工厂函数"""

    # 创建应用
    flask_app = Flask(__name__)
    # 加载配置
    config_class = config_dict[config_type]
    flask_app.config.from_object(config_class)

    # 关联flask应用
    db.init_app(app)

    return flask_app

方式2主要针对的是 动态创建应用 的场景

补充:
flask框架 官方建议 所有的扩展包 都支持这两种初始化方案, 其他flask扩展 也可以尝试使用

posted @ 2021-03-04 22:18  辽南常遇春  阅读(832)  评论(0编辑  收藏  举报