背景:db.create_all()存在局限性,只能识别到新增的模型并将其同步到数据库,对于字段的修改无法实现,比如在原有表上新建字段,用db.create_all()就无法实现。
安装相关库
pip install flask_migrate==2.7.0
ORM映射成表的步骤
在当前路径命令行中输入
1 初始化 只需要输入一次
flask db init
2 识别到模型变化,生成迁移脚本
flask db migrate
3 将迁移脚本同步到数据库中
flask db upgrade
完整代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
from flask_migrate import Migrate
app = Flask(__name__)
HOSTNAME="127.0.0.1"
PORT="3306"
USERNAME="root"
PASSWORD='123456'
DATABASE='demo'
app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4'
db=SQLAlchemy(app)
migrate=Migrate(app,db)
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
# varchar,null=0
username = db.Column(db.String(100),nullable=False)
password = db.Column(db.String(100),nullable=False)
# 新增学号
xuehao= db.Column(db.String(20),nullable=False)
@app.route('/')
def hello_world():
return 'Hello world!'
@app.route('/user/add')
def add_user():
user=User(username="Allen",password="123456")
db.session.add(user)
db.session.commit()
return '添加用户成功'
if __name__ == '__main__':
app.run(debug=True)