zoukankan      html  css  js  c++  java
  • 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扩展 也可以尝试使用

  • 相关阅读:
    访问控制
    静态方法
    类的特殊属性
    Ubuntu Linux 安装配置 MySQL
    Ubuntu16.04 18.04 安装rabbitmq 配置、使用详细教程
    E: The package lists or status file could not be parsed or opened.
    Linux 安装jsoncpp
    gpgkeys: protocol `https’ not supported
    pch文件中调试模式的使用
    ios UITableview 刷新某一个cell 或 section
  • 原文地址:https://www.cnblogs.com/lncyc/p/14483363.html
Copyright © 2011-2022 走看看