在实际的开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会直接手动的去修改,而是去修改ORM对应的模型,然后再把模型映射到数据库中。这时候如果有一个工具能专门做这种事情,就显得非常有用了,而flask-migrate就是做这个事情的。flask-migrate是基于Alembic进行的一个封装,并集成到Flask中,而所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中。
1.先安装flask-migrate
pip install flask-migrate
实例:
1.先建一个资料库存连接配置文件config.py
hostname='127.0.0.1'
port='3306'
username='root'
password='zsrt0760'
database='mytest'
DB_URL='mysql+pymysql://{}:{}@{}:{}/{}'.format(username,password,hostname,port,database)
SQLALCHEMY_DATABASE_URI=DB_URL
SQLALCHEMY_TRACK_MODIFICATIONS=False
2.建一个中间模块桥接模块与app--exts.py
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
3.建模型–models
from exts import db
#单独一模块专做模型映射到数据库存
class User(db.Model):
__tablename__='project_user'
id=db.Column(db.Integer,primary_key=True,autoincrement=True)
name=db.Column(db.String(50))
email=db.Column(db.String(50))
password=db.Column(db.String(50))
4.建一个app的文件如flask_app.py
from flask import Flask
from exts import db
import config
app=Flask(__name__)
app.config.from_object(config)
db.init_app(app)
# user=User(name='jerry',email='siek@163.com',password='kehdj')
# db.session.add(user)
# db.session.commit()
@app.route('/')
def index():
return '这是首页'
if __name__ == '__main__':
app.run(debug=True)
5.建一个manage.py命令行用到的文件
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
from exts import db
from flask_app import app
#需那个模块映射到资料库,就导入那一个
from models import User
manage=Manager(app)
#app与db产生联系
Migrate(app,db)
manage.add_command('db',MigrateCommand)
if __name__ == '__main__':
manage.run()
6.上述建好后,需先运行app,再在DOS进入虚拟目录执行如下命令

7.扩展-添加数据
用以前的方法是没法添加,这时需通过命令传参数的方法进行添加
@manage.option('-n',dest='name')
@manage.option('-e',dest='email')
@manage.option('-p',dest='password')
def user(name,email,password):
data=User(name=name,email=email,password=password)
db.session.add(data)
db.session.commit()
Flask-Migrate是一个基于Alembic的数据库迁移工具,它简化了在Flask应用中管理数据库变更的过程。通过跟踪ORM模型的变化,Flask-Migrate能够自动化地同步这些变更到数据库。在设置中,需要配置数据库连接,创建模型,建立应用,然后使用manage.py命令来执行迁移操作。
802

被折叠的 条评论
为什么被折叠?



