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扩展 也可以尝试使用