1. 程式人生 > >flask-migrate 的介紹、安裝、使用

flask-migrate 的介紹、安裝、使用

Flask-Migrate的介紹、安裝、使用
1、介紹:因為採用'db.create_all'在後期修改資料庫表字段的時候,不會自動的對映到資料庫中,必須刪除表,
    然後重新執行'db.create_all' 才會重新對映。這樣不符合我們的要求,因此flask-migrate就是為了解決
    這個問題。它可以在每次修改模型(class)後,可以將修改的欄位對映到資料庫中
2、首先進入虛擬環境,然後使用‘pip install flask-migrate ’進行安裝
3、使用‘flask_migrate’必須藉助‘flask_scripts’這個包的'MigrateCommand'中包含了所有和資料庫相關
的命令 4、‘flask_migrate’相關的命令: *python manage.py db init :初始化一個遷移指令碼的環境,只需要執行一次
    *python manage.py db migrate :將模型生成遷移檔案,只要模型改變就需要執行 
    *python manage.py db upgrade :把前一檔案真正的對映到資料庫中,每次運行了migrate就需要執行該命令
5、注意點:需要將想要對映到資料庫中的模型,都要匯入到‘manage.py’檔案中,如果沒有匯入,就不會對映到資料庫中
6、manage.py 相關程式碼
manage.py程式碼:
from flask_script import Manager
from migrate_demo import app
from flask_migrate import  Migrate,MigrateCommand
from exts import  db
from models import Article

#init
#migrate
#upgrade
#模型  -->遷移檔案  ---> 表
manager = Manager(app)

migrate = Migrate(app,db)

manager.add_command('db',MigrateCommand)

if 
__name__ == '__main__': manager.run()

config.py 程式碼:

#encoding:utf-8
#dialect+driver://username:[email protected]:port/database
DIALECT = 'mysql'
DRIVER = 'mysqldb'
USERNAME = 'root'
PASSWORD = 'root'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'migrate_demo'
#mysql 不會認識utf-8,而需要直接寫成utf8
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,
                                                                        USERNAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = True

exts.py程式碼:

#encoding:utf-8
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

models.py程式碼:

#encoding:utf-8
from exts import db

class Article(db.Model):
    __tablename = 'article'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
    content = db.Column(db.Text,nullable=False)

migrate_demo.py 程式碼:

#encoding:utf-8
from flask import Flask
from exts import db
from models import Article
import config

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)  #將這個應用主程式繫結到對應的app
# with app.app_context(): #在主程式中,將app推送到app堆疊中;模型與資料庫對映
#     db.create_all()  #如果使用了 flask-migrate 就可以不需要使用這行程式碼
@app.route('/')
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run(debug = True)

有了以上程式碼後,直接進入manage.py所在目錄,執行

E:\PythonProject\migrate_demo>python manage.py db init
Creating directory E:\PythonProject\migrate_demo\migrations ... done
Creating directory E:\PythonProject\migrate_demo\migrations\versions ... done
Generating E:\PythonProject\migrate_demo\migrations\alembic.ini ... done
Generating E:\PythonProject\migrate_demo\migrations\env.py ... done
Generating E:\PythonProject\migrate_demo\migrations\env.pyc ... done
Generating E:\PythonProject\migrate_demo\migrations\README ... done
Generating E:\PythonProject\migrate_demo\migrations\script.py.mako ... done
Please edit configuration/connection/logging settings in 'E:\\PythonProject\\migrate_demo\\migrati
s\\alembic.ini' before proceeding.


E:\PythonProject\migrate_demo>python manage.py db migrate
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'article'
Generating E:\PythonProject\migrate_demo\migrations\versions\b4b05af63024_.py ... done


E:\PythonProject\migrate_demo>python manage.py db upgrade
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> b4b05af63024, empty message


E:\PythonProject\migrate_demo>

說明:

每次models.py修改後,就像以上方式在命令終端中執行命令:

python manage.py db migrate

python manage.py db upgrade

資料庫表結構就會做相應的更改,而不用簡單除暴的先drop table 表,再執行app主函式來重新對映

相關推薦

flask-migrate介紹安裝使用

Flask-Migrate的介紹、安裝、使用 1、介紹:因為採用'db.create_all'在後期修改資料庫表字段的時候,不會自動的對映到資料庫中,必須刪除表, 然後重新執行'db.create_all' 才會重新對映。這樣不符合我們的要求,因此flask-migr

libevent源碼分析-介紹安裝使用

ont write net clas pretty string his har oot Libevent介紹 安裝 樣例 Libevent介紹 在include\event2\event.h中有關於Libevent的介紹,這裏簡單翻譯

Python第一天:編程的概念python的介紹安裝python的變量python的運算符

代碼 .com 循環輸出 html targe .cn 次循環 概念 9.png 一、內容 二、練習: 1、使用while循環輸出1、2、3、4、5、6、8、9、10 方法一:說明:當count 等於7時,count加1,此時count的值為8,然後continu

第一篇:Tomcat介紹安裝配置

分享圖片 訪問網站 esp ext .tar.gz resp less a20 關閉防火墻 一、Tomcat介紹 Tomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,有Apache 、Sun和其

Nginx的介紹安裝Nginx的默認虛擬主機

Linux學習筆記Nginx的介紹與安裝 Nginx的默認虛擬主機 Nginx的介紹與安裝、Nginx的默認虛擬主機

Tomcat的介紹安裝jdk的安裝

Tomcat jdk Tomcat介紹 Tomcat是Apache軟件基金會的Jakarta項目中的一個核心項目;Java程序寫的網站用Tomcat+jdk來運行;Tomcat是一個中間件,真正起作用的,解析Java的是jdk;jdk是整個Java的核心,他包含了Java的運行環境和一堆Java相關的

Ansible介紹安裝遠程執行命令拷貝文件或者目錄遠程執行腳本

github 軟件 ip地址 密碼 ssh doc ech 圖形 ofo Ansible介紹 不需要安裝客戶端,通過sshd去通信基於模塊工作,模塊可以由任何語言開發不僅支持命令行使用模塊,也支持編寫yaml格式的playbook,易於編寫和閱讀安裝十分簡單,centos上

開啟運維之路之第 5 篇——Redis介紹安裝管理

Redis:Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。Redis百度百科介紹 瞭解下NoSQL (Not noly SQL)不僅僅是SQL,Redis就屬於非關係型資料庫,Mysql ,orac

Spring介紹安裝helloworld

Spring 4.0 描述 Spring(官網:projects.spring.io)是一個框架,為了簡化企業級應用開發而生,使用Spring可以使簡單的javabean實現以前只有gjb才能實現的功能。 安裝 下載spring的jar包,在eclipse中選擇help–

MongoDb資料庫介紹安裝使用

1.資料庫與檔案的區別 資料庫有資料庫表、行和列的概念,讓我們資料儲存更方便 資料庫提供了非常方便的介面,可以讓後端語言實現增刪改查 2.NoSQL資料庫在以下的這幾種場景應用比較適用 1.資料庫模型比較簡單 2.需要靈活性更強的IT系統 3.對資料庫效能要求較高 4.不需要高度的一致性 5

nginx的介紹安裝啟動

nginx是什麼?   伺服器:http伺服器、反向代理伺服器、虛擬主機。   http伺服器     是什麼?是web伺服器的一種,它是基於超文字傳輸協議HTTP的伺服器。     能幹嘛?HTTP伺服器會等待瀏覽器傳送的請求,接收到URL請求後從中提取有用資訊作出處理,最後將 處

Python之路-python(mysql介紹安裝pymysqlORM sqlachemy)

轉載至:北極之光部落格 本節內容 1、資料庫介紹 2、mysql管理 3、mysql資料型別 4、常用mysql命令   建立資料庫   外來鍵   增刪改查表 5、事務 6、索引 7、python 操作mysq

Typescript 學習筆記一:介紹安裝編譯

前言 整理了一下 Typescript 的學習筆記,方便後期遺忘某個知識點的時候,快速回憶。 為了避免凌亂,用 gitbook 結合 marketdown 整理的。 若是有不對的地方,歡迎留言指出。 眾所周知,JavaScript 是弱型別的,而這對開發人員來說,在一定程度上算是一個“痛點”。解

Redis介紹安裝客戶端

1. Redis介紹   1.1 什麼是NoSql   為了解決高併發、高可用、高可擴充套件,大資料儲存等一系列問題而產生的資料庫解決方案,就是NoSql。NoSql,叫非關係型資料庫,它的全名No

Ubuntu安裝anaconda 介紹安裝配置

1.先去官方地址下載好對應的安裝包 2.然後直接安裝anaconda 命令安裝 安裝Python 3.6: bash ~/Downloads/Anaconda3-5.2.0-Linux-x86_64.sh 安裝Python 2.7: bash

大資料生態系統基礎: HBASE(一):HBASE 介紹安裝配置

一、介紹        Apache HBase是Hadoop資料庫,一個分散式的、可伸縮的大型資料儲存。        當您需要隨機的、實時的讀/寫訪問您的大資料時,請使用Apache HBase。這個專案的目標是承載非常大的表——數十億行X百萬列的列——執行在在商用硬體

hping原理安裝使用詳解介紹

【原理基礎】    Hping是一個命令列下使用的TCP/IP資料包組裝/分析工具,其命令模式很像Unix下的ping命令,但是它不是隻能傳送ICMP迴應請求,它還可以支援TCP、UDP、ICMP和RAW-IP協議,它有一個路由跟蹤模式,能夠在兩個相互包含的通道

Linux(CentOS)中Redis介紹安裝使用【一篇就夠】

一、介紹Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data

Python爬蟲 selenium+PhantomJS 介紹安裝使用

之前用Java做過爬蟲,也用到過selenium和PhantomJS。最近痴迷於python爬蟲,將selenium+PhantomJS在python中的應用詳細總結一下。 一、Selenium介紹 Selenium 是什麼?一句話,自動化測試工具。它支援各

Mongodb—入門(介紹安裝操作)

1、mongodb是什麼mongodb是一個高效能的、開源的、無模式的文件型資料庫,使用C++語言開發隨著業務領域的發展,資料的擴大,逐漸網際網路開發演變成了超大規模和高併發模型,這樣在傳統的資料庫領域就顯得力不從心了比如:1、在很多電商型網站,他們的QPS基本上都會在上每秒