Flask數(shù)據(jù)庫(kù)遷移簡(jiǎn)單介紹
前言
用過(guò)Django的小伙伴都知道,Django的ORM是自帶的,比較特殊,而且集成了很多功能,比如數(shù)據(jù)庫(kù)遷移…
何為ORM,個(gè)人之見(jiàn)解,簡(jiǎn)化sql語(yǔ)句的書(shū)寫(xiě),將關(guān)系型數(shù)據(jù)庫(kù)的一張張表轉(zhuǎn)化為了python的類(lèi),最大的好處是簡(jiǎn)化了學(xué)習(xí)成本,不會(huì)sql語(yǔ)句的程序員也能平滑的使用數(shù)據(jù)庫(kù),并且天生防sql注入。flask可以使用SQLAlchemy,包名為flask-sqlalchemy.至于具體用法翻譯的官方文檔講的也足夠清楚。大家直接谷歌跟著文檔就能搞定,本篇主要講如何進(jìn)行數(shù)據(jù)庫(kù)遷移。
flask的小工具
大家從Django轉(zhuǎn)至Flask最明顯的一個(gè)差異就是,flask直接運(yùn)行就可以啟動(dòng)服務(wù),Django是使用了runserver來(lái)進(jìn)行運(yùn)行。至于好壞大家自行斟酌。這里提一個(gè)插件。flask-script。pip安裝即可。
from flask_script import Manager ...... manager = Manager(app) ...... #app.run() #注釋這句 manager.run()
這樣,啟動(dòng)的方式變?yōu)?python main.py runserver
這似乎有點(diǎn)畫(huà)蛇添足,實(shí)則不然,這和我們下面要講的數(shù)據(jù)庫(kù)遷移有很大的聯(lián)系。
數(shù)據(jù)庫(kù)遷移
需要用的的插件 flask-migrate
安裝之
main.py
from flask import Flask from flask_script import Manager from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate,MigrateCommand app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////opt/db.sqlite' #使用sqlite3數(shù)據(jù)庫(kù) db = SQLAlchemy(app) #ORM migrate = Migrate(app,db) manager = Manager(app) manager.add_comman('db',MigrateCommand) #添加db 命令(runserver的用法) #一個(gè)用戶(hù)表 class User(db.Model): ... ... 省略 if __name__ == '__main__': manager.run()
這樣,準(zhǔn)備工作已經(jīng)就緒。
運(yùn)行python main.py db init創(chuàng)建數(shù)據(jù)表。并且會(huì)在你項(xiàng)目下生成migrations/目錄,保存你數(shù)據(jù)庫(kù)每次變更的內(nèi)容。
修改User類(lèi)。
python main.py db migrate 提交修改
python main.py db upgrade 執(zhí)行修改
再看User表,已經(jīng)改變。
python main.py db downgrade 回退修改
有一點(diǎn)注意的:SQLite3不能刪除有值的列…所以,大家就不要?jiǎng)h除列了…
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python三元運(yùn)算與lambda表達(dá)式實(shí)例解析
這篇文章主要介紹了Python三元運(yùn)算與lambda表達(dá)式實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理基本操作之Seq2seq的用法
Seq2Seq模型是輸出的長(zhǎng)度不確定時(shí)采用的模型,這種情況一般是在機(jī)器翻譯的任務(wù)中出現(xiàn),將一句中文翻譯成英文,那么這句英文的長(zhǎng)度有可能會(huì)比中文短,也有可能會(huì)比中文長(zhǎng),所以輸出的長(zhǎng)度就不確定了2021-10-10Python使用PyAudio制作錄音工具的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python使用PyAudio制作錄音工具,音頻錄制與視頻錄制相似,也是以數(shù)據(jù)幀的方式錄制保存,這次使用強(qiáng)大的第三方包PyAudio和內(nèi)置的wave模塊編寫(xiě),需要的朋友可以參考下2022-04-04運(yùn)行tensorflow python程序,限制對(duì)GPU和CPU的占用操作
今天小編就為大家分享一篇運(yùn)行tensorflow python程序,限制對(duì)GPU和CPU的占用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python正則過(guò)濾字母、中文、數(shù)字及特殊字符方法詳解
這篇文章主要介紹了python正則過(guò)濾字母、數(shù)字及特殊字符方法詳解,需要的朋友可以參考下2020-02-02Pycharm沒(méi)有報(bào)錯(cuò)提示(誤觸ignore)的完美解決方案
這篇文章主要介紹了Pycharm沒(méi)有報(bào)錯(cuò)提示(誤觸ignore)的解決方案,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12