zoukankan      html  css  js  c++  java
  • flask-migrate

    不启动视图手动添加app到app栈

    with app.app_context():
        db.create_all()

    不删除表直接更改表结构(如增加一列)

    模型-》迁移文件-》表

    * 采用db.create_all 在后期修改字段时,不会自动映射到数据库中,必须删除表,之后重新运行‘db.reate_all'才会重新映射,为此可使用flask-Migrate来解决这一问题。它可以在每次修改模型后,可将修改后的模型映射到数据库中。

    * 使用flask-migrate必须借助flask-scripts.

    * flask-migrate中包含了所有对数据库相关的命令。

    • 安装:

    pip install flask-migrate

    • 使用:
     1 from flask import Flask, url_for, redirect, render_template
     2 import config
     3 from db import db
     4 from models import Article
     5 
     6 app = Flask(__name__)
     7 app.config.from_object(config)
     8 # db = SQLAlchemy(app)
     9 db.init_app(app)
    10 
    11 @app.route('/')
    12 def index():
    13     # return render_template('index.html')
    14     return 'index'
    15 
    16 if __name__ == '__main__':
    17     app.run()
    vlauegood.py
    1 from flask_sqlalchemy import SQLAlchemy
    2 db = SQLAlchemy()
    db.py
     1 from flask_script import Manager
     2 from valuegood import app
     3 from db import db
     4 from flask_migrate import Migrate, MigrateCommand
     5 from models import Article
     6 
     7 manager = Manager(app)
     8 
     9 # 1.要使用flask-migrate必须绑定app及db
    10 migrate = Migrate(app, db)
    11 # 2.把MigrateCommand添加到manager
    12 manager.add_command('db', MigrateCommand)
    13 
    14 
    15 if __name__ == '__main__':
    16     manager.run()
    manager.py
    1 from db import db
    2 
    3 class Article(db.Model):
    4     __tablename__ = 'article'
    5     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    6     title = db.Column(db.String(100), nullable=False)
    7     content = db.Column(db.Text, nullable=False)
    8     author_id = db.Column(db.Integer, nullable=False)
    models.py
    • 运行:

    1.python manager.py db init  

    2.python manager.py db migrate

    3.python manager.py db upgrade

    * 当模型改变时,在cmd中重新运行2,3 即可。

    * 在manager.py文件中必须把model中的模型导入:

    from models import Article
  • 相关阅读:
    项目1:即时标记
    每天一个小程序—0000题(python图像处理)
    每天一个小程序—0004题(统计单词出现次数)
    每天一个小程序—第0001题(uuid模块)
    python实现八皇后问题
    2018/01/05——时间会改变一切!
    HDU 6249 Alice’s Stamps(dp)
    51nod 1422 沙拉酱前缀
    【转】DSP动态内存分配函数的使用
    优秀人的博客
  • 原文地址:https://www.cnblogs.com/clairexxx/p/9746029.html
Copyright © 2011-2022 走看看