1. 程式人生 > >Flask ==> Migrate

Flask ==> Migrate

odi 文件 其他 ase 環境 http view 處理 aps

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

Flask ==> Migrate