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介紹和安裝、pymysql、ORM 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基本上都會在上每秒