zoukankan      html  css  js  c++  java
  • Flask ==> Migrate

    Flask  ==>   Migrate

    1.结构图

    2.一般流程。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from flask import Flask
    
    from auth.auth import Auth
    from flask_session import Session
    
    # 1. 引入Flask-SQLAlchemy
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()
    
    
    from .views.account import account
    from .views.main import main
    from .views.user import user
    
    # 3. 导入models中的表
    from .models import *
    
    
    def create_app():
        app = Flask(__name__)
        app.debug = True
        app.secret_key = 'sdiusdfsdf'
        # 设置配置文件
        app.config.from_object('settings.DevelopmentConfig')
    
        # 注册蓝图
        app.register_blueprint(account)
        app.register_blueprint(user)
        app.register_blueprint(main)
    
        # 注册组件
        # Session(app)
        Auth(app)
    
        # 2. 注册 Flask-SQLAlchemy
        # 这个对象在其他地方想要使用
        # SQLAlchemy(app)
        db.init_app(app)
    
        return app
    manage.py
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from flask import Flask
    
    from auth.auth import Auth
    from flask_session import Session
    
    # 1. 引入Flask-SQLAlchemy
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()
    
    
    from .views.account import account
    from .views.main import main
    from .views.user import user
    
    # 3. 导入models中的表
    from .models import *
    
    
    def create_app():
        app = Flask(__name__)
        app.debug = True
        app.secret_key = 'sdiusdfsdf'
        # 设置配置文件
        app.config.from_object('settings.DevelopmentConfig')
    
        # 注册蓝图
        app.register_blueprint(account)
        app.register_blueprint(user)
        app.register_blueprint(main)
    
        # 注册组件
        # Session(app)
        Auth(app)
    
        # 2. 注册 Flask-SQLAlchemy
        # 这个对象在其他地方想要使用
        # SQLAlchemy(app)
        db.init_app(app)
    
        return app
    init.py

    init.py 在 manage.py 里的 create_app 跳入之后的。

    1.先处理app。

    # 1. 引入Flask-SQLAlchemy
    from flask_sqlalchemy import SQLAlchemy   #导入SQLALchemy
    db = SQLAlchemy()  #实例化SQALchemy对象

    ps:  这个 db(sqlalchemy)对象就和session也一样,可以创建个对象。 session里面有个 __init__ 方法,里面含有各种方法。

      

     2.注册 Flask-SQLAlchemy。

    运用类似session的__intit__ 引入传参数,然后在执行。

    # 1. 引入Flask-SQLAlchemy
    from flask_sqlalchemy import SQLAlchemy   #导入SQLALchemy
    db = SQLAlchemy(app)  #实例化SQALchemy对象。   db= SQLALchemy(参数)   可以传个app参数
    # 2. 注册 Flask-SQLAlchemy
    # 这个对象在其他地方想要使用
    # SQLAlchemy(app)
    db.init_app(app)   #执行

    3.导入models表。

    # 3. 导入models中的表
    from .models import *

    4.写类继承db.Model。

    ps: 正经:  原来我们写的继承Base。

      不正经: 一下这种方式,饶了一圈。本质和Base一样的。

    5.主要功能: 创建,修改表等等功能。 中间有一步: 定制命令,  manager=Manager(app)

    5.1:导入:from flask_migrate import Migrate, MigrateCommand

    from app import create_app, db

     

    5.2 创建migrate 示例

    5.3  创建db命令

     连接数据库用配置文件init里的文件执行 。我们用了flask组件,以后就去配置文件里写就好了。

     只要把 sqlalchemy 的参数拿到配置文件里就好了。

    1.拿配置文件

    setting.py:

     最后连上数据库:

        3.Flask_migrate    : 类似django的  python manage.py db migrate   =  python  manage.py makemigrations
                                           python manage.py db upgrade   = python  manage,py migrate

     二: 操作数据库

     1. 对数据库做操作需要有session。有了session才能做操作。那么 session从哪来呢?

      回答:  db.session  它会自动帮我们创建session。  它是  flask里的 sqlalchemy 的对象里面的session。

      以前我们会的session两种:

        1.  线程安全

        2. 手动创建

      

     

    后面两步:要 commit  和  remove

      执行sql  方式:

      1.第一种方式:

      

            方式一:
                result = db.session.query(models.User.id,models.User.name).all()
                db.session.remove()

      2.第二种方式:

            方式二:
                result = models.Users.query.all()   #局限于自己那张表

    flask回顾:用了哪些插件

       Flask  

      DButils  : 针对原生sql的时候用的。 之后如果需要用 sqlalchemy  那么我们就只好二选一了。 也可都用,但是最好不要这样。

      Flask-session:

      Flask-Script:

      Flask-Migrate:

      Flask-SQLAIchemy:

      blinker:

      wtforms:

    requirements.txt:

    pip3  freeze  
    pip3 freeze > requirements.txt

     获取环境中所有安装的模块。

     # pip3 install pipreqs
     # 获取当前所在程序目录中涉及到的所有模块,并自动生成 requirements.txt 且写入内容。

     pipreqs ./
     # 写程序路径, 我们需要找谁,它会帮我们找到



    进入程序目录:
    pip3 install -r requirements.txt
  • 相关阅读:
    前端开发笔记(2)css基础(上)
    前端开发笔记(1)html基础
    <Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
    MyEclipse中搭建Struts2开发环境
    Android 投射工具和录屏工具
    似是而非的k=sqrt(n)
    算法:求比指定数大且最小的“不重复数”问题的高效实现
    巧用“异或”
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(5)
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(4)
  • 原文地址:https://www.cnblogs.com/zhongbokun/p/8279125.html
Copyright © 2011-2022 走看看