环境背景
最近在写一个flask的web项目,数据库使用的是mysql8.0数据库,数据库的连接方式使用的是flask-sqlalchemy的映射方式。下面贴出自己的环境:
遇到的问题:
自己的一个用户表原来没有电话号码字段,现在要添加电话号码字段,由于不想删除原来已有的数据,所以使用flask-migrate
进行数据迁移,可以动态添加字段。
下面是启动app时会创建数据表,但是有一个问题就是以后如果要重新添加字段,就要把数据库删除,再重新创建,这样子的话数据库里的数据就没有了,再实际工作中肯定是不能这样子的。
# 文件名:app.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# 学生表orm映射
class Student(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name = db.Column(db.String(32),nullable=False)
def create_app():
app = Flask(__name__)
app.config.from_object('app.config') //导入数据库连接配置
db.init_app(app)
# 由于没有入栈,在这里手动推栈创建所有的表
with app.app_context():
db.create_all() //将所有的model创建到数据库中去,已有的就不能会更新了
return app
if __name__ == "__main__":
app = create_app()
app.run()
新建一个manager.py
文件用来添加数据表新增字段。
你要安装2个插件才可以添加新字段:
flask-script
flask-migrate
具体的使用和安装方法自己百度一下