python3 migrations 使用

config.js

HOSTNAME = '192.168.195.161'
PORT     = '3306'
DATABASE = 'medicine_settle'
USERNAME = 'admin'
PASSWORD = 'admin'
DB_URI = 'mysql+mysqldb://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI

SQLALCHEMY_TRACK_MODIFICATIONS = True

exts.js

#encoding: utf-8
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

manage.py

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from exts import db
from migrate_demo import app

# python manage.py db init
# python manage.py db migrate
# python manage.py db upgrade
# 模型  ->  迁移文件  ->  表

manager = Manager(app)

# 1. 要使用flask_migrate,必须绑定app和db
migrate = Migrate(app, db)

# 2. 把MigrateCommand命令添加到manager中
manager.add_command('db', MigrateCommand)

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

migrate_demo.py

#encoding: utf-8
from flask import Flask
from exts import db
import config
app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
# 新建一个article模型,采用models分开的方式
# flask-scrpts的方式

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)

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)
    tags = db.Column(db.String(100),nullable=False)

python3 migrations 使用_第1张图片

python manage.py db init [只运行一次就行,以后不用再运行]

python manage.py db migrate [更新的话需要每次都运行]

python manage.py db upgrade [更新的话需要每次都运行]

模型 -> 迁移文件 -> 表

需要特别注意的事是,这里的使用方式与mybatis逆向工程是相反的,mybatis 是根据表生成实体类以及mapper.xml,而python的migrations则是根据你写的实体生成表。如果没有配置好,migrations 会将你数据库中的表删除,再创建。造成严重的不可挽回的损失。切记切记!!!

你可能感兴趣的:(python,python,flask)