flask+mysql网站开发,数据迁移总结

flask进行数据迁移:

1、用pycharm专业版创建一个Flask应用   app.py

from flask import Flask
app = Flask(__name__)

@app.route("/",method=["GET"])
def index():
    return "index page"

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

2、与app.py同目录下创建一个ext.py文件,用来初始化SQLAlchemy,生成db实例(此处需要安装pymysql+flask_sqlalchemy) 

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

3、与app.py同目录下,建立flask配置文件config.py(注:本文讲解的程序使用的是mysql8)

class config:
    # 数据库的配置信息
    HOSTNAME = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'flask'
    USERNAME = 'root'
    PASSWORD = 'root'
    DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
    SQLALCHEMY_DATABASE_URI = DB_URI

4、在app.py文件中将数据库实例与Flask应用程序相关联,并加载数据库配置文件

from flask import Flask
app = Flask(__name__)

# 将数据库实例与Flask应用程序相关联
from exts import db
db.init_app(app)

from config import config
# 从 Python 对象中加载配置 
app.config.from_object(config)


@app.route("/",method=["GET"])
def index():
    return "index page"

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

5、与app.py同目录下新建一个models.py文件,创建数据库模型

from exts import db

# 定义用户模型
class UserModel(db.Model):
    __tablename__ = "tbl_users"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(20), nullable=False, unique=True)
    mobile = db.Column(db.String(11), nullable=False, unique=True)

6、安装数据迁移的第三方库 Flask-Migrate并且绑定到Flask应用程序和数据库实例,  【 pip install Flask-Migrate 】 ,代码如下app.py所示:

from flask import Flask
#此处注意,如果数据库模型没有创建在本文件,那么需要在此处引入,否则后面将迁移应用到数据库可能不会成功
from models import *

app = Flask(__name__)

# 将数据库实例与Flask应用程序相关联
from exts import db
db.init_app(app)

from config import config
# 从 Python 对象中加载配置 
app.config.from_object(config)

# Flask-Migrate 扩展中用于绑定 Flask 应用程序和数据库的方法
Migrate(app, db)

@app.route("/",method=["GET"])
def index():
    return "index page"

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

7、进行数据迁移

以下命令在该项目所在的虚拟环境下执行
1、初始化一个迁移仓库
flask db init 
2、创建迁移脚本
flask dn migrate
3、把迁移应用到数据库中
Flask db upgrade

至此,数据库迁移成功