【Flask项目2】模型类的映射方式新版本和旧版本(4)
生活随笔
收集整理的這篇文章主要介紹了
【Flask项目2】模型类的映射方式新版本和旧版本(4)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方式一:模型類的映射方式舊版本
1、Flask-Migrate介紹
k-migrate可以十分方便的進行數據庫的遷移與映射,將我們修改過的ORM模型映射到數據庫中。flask_migrate是基于Alembic進行的一個封裝,并集成到Flask中,所有的遷移操作其實都是Alembic做的,他能跟蹤模型的變化,并將變化映射到數據庫中。
如果導入不成功,是因為flask與flask-migrate的版本沖突造成的
解決辦法,1、全面降低版本
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、按照新版本的方法執行命令 '''-----------------------下面的代碼是老版本的代碼----------------------------- # 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、執行以下命令
1. 初始化一個環境:python db_manage.py db init 2. 自動檢測模型,生成遷移腳本:python db_manage.py db migrate 3. 將遷移腳本映射到數據庫中:python db_manage.py db upgrade 4. 更多命令:python db_manage.py db --help方式二:模型類的映射方式新版本
如果導入不成功,是因為flask與flask-migrate的版本沖突造成的
解決辦法,2、按照新版本的方法執行命令
在項目main.py文件中,初始化migrate對象
初始化完成之后,執行以下命令
flask db init flask db migrate flask db upgrade直接執行上面3個命令,需要默認的Flask項目入口文件(app.py),我的項目的入口文件是main文件。
當前項目沒有默認的flask項目入口文件,需要設置環境變量:
怎么設置?
在終端中輸入命令
特別注意1:如果flask項目的入口文件不是app.py,那么一定要設置環境變量,之后再執行上面3個命令
set FLASK_APP=financial/main.py特別注意2:執行3個命令之后,并不會再數據庫中看到表,原因是沒有將模型類加載到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文件: ''' 創建app的函數,參數代表運行的類型:開發環境、生產環境 ''' def create_app(run_type):#創建appapp=Flask(__name__)#加載整個項目的配置app.config.from_object(map_config[run_type])#初始化SQLALchemyfrom comment.models import dbdb.init_app(app)#初始化redis的數據庫連接from comment.utils.financial_Redis import frfr.init_app(app)#初始化日志處理的工具from comment.utils.financial_logging import create_loggercreate_logger(app)#初始化migrate之后,可以執行命令# flask db init# flask db migrate# flask db upgrade# 直接執行上面3哥命令,需要默認的Flask項目入口文件(app.py)# 當前項目沒有默認的flask項目入口文件,需要設置環境變量:Migrate(app,db)return app總結
以上是生活随笔為你收集整理的【Flask项目2】模型类的映射方式新版本和旧版本(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python通过requirements
- 下一篇: load、loads、dump、dump