日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Flask项目2】模型类的映射方式新版本和旧版本(4)

發(fā)布時間:2025/3/21 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Flask项目2】模型类的映射方式新版本和旧版本(4) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

方式一:模型類的映射方式舊版本

1、Flask-Migrate介紹
k-migrate可以十分方便的進行數(shù)據(jù)庫的遷移與映射,將我們修改過的ORM模型映射到數(shù)據(jù)庫中。flask_migrate是基于Alembic進行的一個封裝,并集成到Flask中,所有的遷移操作其實都是Alembic做的,他能跟蹤模型的變化,并將變化映射到數(shù)據(jù)庫中。

如果導入不成功,是因為flask與flask-migrate的版本沖突造成的
解決辦法,1、全面降低版本

pip install flask-migrate

2、Flask-Migrate使用

在項目中新建一個test_migrate.py文件

from financial import create_app from comment.models import db from flask_script import Manager from flask_migrate import Migrate, MigrateCommand''' 如果導入不成功,是因為flask與flask-migrate的版本沖突造成的 解決辦法, 1、全面降低版本 2、按照新版本的方法執(zhí)行命令 '''-----------------------下面的代碼是老版本的代碼----------------------------- # 1、初始化app app = create_app('develop')# 2、導入模型類 from comment.models.user import User from comment.models.account import Account# 3、初始化manager manager = Manager(app)# 4、用來綁定app和db到flask-migrate Migrate(app, db)# 5、添加Migrate的所有子命令到db下 manager.add_command('financial_db', MigrateCommand)if __name__ == '__main__':manager.run()

3、執(zhí)行以下命令

1. 初始化一個環(huán)境:python db_manage.py db init 2. 自動檢測模型,生成遷移腳本:python db_manage.py db migrate 3. 將遷移腳本映射到數(shù)據(jù)庫中:python db_manage.py db upgrade 4. 更多命令:python db_manage.py db --help

方式二:模型類的映射方式新版本

如果導入不成功,是因為flask與flask-migrate的版本沖突造成的
解決辦法,2、按照新版本的方法執(zhí)行命令

在項目main.py文件中,初始化migrate對象

from flask_migrate import MigrateMigrate(app,db)

初始化完成之后,執(zhí)行以下命令

flask db init flask db migrate flask db upgrade

直接執(zhí)行上面3個命令,需要默認的Flask項目入口文件(app.py),我的項目的入口文件是main文件。
當前項目沒有默認的flask項目入口文件,需要設置環(huán)境變量:
怎么設置?
在終端中輸入命令

特別注意1:如果flask項目的入口文件不是app.py,那么一定要設置環(huán)境變量,之后再執(zhí)行上面3個命令

set FLASK_APP=financial/main.py

特別注意2:執(zhí)行3個命令之后,并不會再數(shù)據(jù)庫中看到表,原因是沒有將模型類加載到app.py文件中,打入即可,代碼如下

from financial import create_appapp=create_app('develop') from comment.models.user import User from comment.models.account import Accountif __name__ == '__main__':app.run() from flask import Flask from settings.default import map_config from flask_migrate import Migrate我的main.py文件: ''' 創(chuàng)建app的函數(shù),參數(shù)代表運行的類型:開發(fā)環(huán)境、生產(chǎn)環(huán)境 ''' def create_app(run_type):#創(chuàng)建appapp=Flask(__name__)#加載整個項目的配置app.config.from_object(map_config[run_type])#初始化SQLALchemyfrom comment.models import dbdb.init_app(app)#初始化redis的數(shù)據(jù)庫連接from comment.utils.financial_Redis import frfr.init_app(app)#初始化日志處理的工具from comment.utils.financial_logging import create_loggercreate_logger(app)#初始化migrate之后,可以執(zhí)行命令# flask db init# flask db migrate# flask db upgrade# 直接執(zhí)行上面3哥命令,需要默認的Flask項目入口文件(app.py)# 當前項目沒有默認的flask項目入口文件,需要設置環(huán)境變量:Migrate(app,db)return app

總結

以上是生活随笔為你收集整理的【Flask项目2】模型类的映射方式新版本和旧版本(4)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。