Flask數(shù)據(jù)庫(kù)遷移簡(jiǎn)單介紹
前言
用過(guò)Django的小伙伴都知道,Django的ORM是自帶的,比較特殊,而且集成了很多功能,比如數(shù)據(jù)庫(kù)遷移…
何為ORM,個(gè)人之見解,簡(jiǎn)化sql語(yǔ)句的書寫,將關(guān)系型數(shù)據(jù)庫(kù)的一張張表轉(zhuǎn)化為了python的類,最大的好處是簡(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)畫蛇添足,實(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è)用戶表
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類。
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 nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作
這篇文章主要介紹了python nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式
這篇文章主要介紹了keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Django 解決新建表刪除后無(wú)法重新創(chuàng)建等問(wèn)題
這篇文章主要介紹了Django 解決新建表刪除后無(wú)法重新創(chuàng)建等問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
不知道這5種下劃線的含義,你就不算真的會(huì)Python!
Python是一種高級(jí)程序語(yǔ)言,其核心設(shè)計(jì)哲學(xué)是代碼可讀性和語(yǔ)法,能夠讓程序員用很少的代碼來(lái)表達(dá)自己的想法。這篇文章主要介紹了不知道這5種下劃線的含義,你就不算真的會(huì)Python!對(duì)此標(biāo)題感興趣的朋友一起閱讀本文吧2018-10-10
Python DBM模塊輕松使用小型數(shù)據(jù)庫(kù)存儲(chǔ)管理數(shù)據(jù)
這篇文章主要介紹了Python DBM模塊輕松使用小型數(shù)據(jù)庫(kù)存儲(chǔ)管理數(shù)據(jù),它可以讓你輕松地存儲(chǔ)和管理鍵值對(duì)數(shù)據(jù),可以使用 dbm 模塊來(lái)操作 DBM 文件,或者使用 shelve 模塊來(lái)存儲(chǔ)任意類型的 Python 對(duì)象2024-01-01
python實(shí)現(xiàn)類似Netty功能的異步編程
本文將介紹如何使用Python來(lái)實(shí)現(xiàn)本文將介紹如何使用Python來(lái)實(shí)現(xiàn)類似于Netty的功能,并提供一些代碼示例來(lái)幫助讀者理解,能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
解決Python print 輸出文本顯示 gbk 編碼錯(cuò)誤問(wèn)題
這篇文章主要介紹了解決Python print 輸出文本顯示 gbk 編碼錯(cuò)誤問(wèn)題,本文給出了三種解決方法,需要的朋友可以參考下2018-07-07

