日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

方式一:模型類(lèi)的映射方式舊版本

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

如果導(dǎo)入不成功,是因?yàn)閒lask與flask-migrate的版本沖突造成的
解決辦法,1、全面降低版本

pip install flask-migrate

2、Flask-Migrate使用

在項(xiàng)目中新建一個(gè)test_migrate.py文件

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

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

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

方式二:模型類(lèi)的映射方式新版本

如果導(dǎo)入不成功,是因?yàn)閒lask與flask-migrate的版本沖突造成的
解決辦法,2、按照新版本的方法執(zhí)行命令

在項(xiàng)目main.py文件中,初始化migrate對(duì)象

from flask_migrate import MigrateMigrate(app,db)

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

flask db init flask db migrate flask db upgrade

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

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

set FLASK_APP=financial/main.py

特別注意2:執(zhí)行3個(gè)命令之后,并不會(huì)再數(shù)據(jù)庫(kù)中看到表,原因是沒(méi)有將模型類(lèi)加載到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ù)代表運(yùn)行的類(lèi)型:開(kāi)發(fā)環(huán)境、生產(chǎn)環(huán)境 ''' def create_app(run_type):#創(chuàng)建appapp=Flask(__name__)#加載整個(gè)項(xiàng)目的配置app.config.from_object(map_config[run_type])#初始化SQLALchemyfrom comment.models import dbdb.init_app(app)#初始化redis的數(shù)據(jù)庫(kù)連接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哥命令,需要默認(rèn)的Flask項(xiàng)目入口文件(app.py)# 當(dāng)前項(xiàng)目沒(méi)有默認(rèn)的flask項(xiàng)目入口文件,需要設(shè)置環(huán)境變量:Migrate(app,db)return app

總結(jié)

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

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