Flask项目flask数据的迁移的完成

1.首先要安装flask_migrate这个包,注:新版本只需这个即可,而旧版本需要导入三个包
python 复制代码
#############旧版本###################
 from info import create_app, db,models
 from flask_script import Manager
 from flask_migrate import Migrate, MigrateCommand

app = create_app('develop')

 # 创建manager对象,管理app
 manager = Manager(app)

 # 使用Migrate关联app,db
 Migrate(app,db)

 # 给manager添加一条操作命令
 manager.add_command('db',MigrateCommand)

 # 更改入口文件启动命令
 if __name__ == '__main__':
        manager.run()

#############新版本###################

 from info import create_app, db,models
 from flask_migrate import Migrate

 app = create_app('develop')

 # 创建Migrate实例
 migrate = Migrate(app, db)

 if __name__ == '__main__':
     app.run()
2.数据库的配置
---在models.py中
python 复制代码
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash

from info import constants

# 这里需要引入db
from . import db


class BaseModel(object):
    """模型基类,为每个模型补充创建时间与更新时间"""
    create_time = db.Column(db.DateTime, default=datetime.now)  # 记录的创建时间
    update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)  # 记录的更新时间

。。。。。。。
---在项目包init.py文件config中
python 复制代码
import logging
from logging.handlers import RotatingFileHandler

from flask_wtf.csrf import CSRFProtect
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from redis import StrictRedis
from flask_session import Session
from config import config_dict

# 定义redis_store变量
redis_store = None

#  1. 定义db的变量<---------------------
db = SQLAlchemy()


def create_app(config_name):
    app = Flask(__name__)

    # 获取config配置
    config = config_dict.get(config_name)

    # 调用日志方法,记录程序运行信息
    log_file(config.LEVEL_NAME)

    app.config.from_object(config)

    # 2.创建数据库关联对象并关联app
    db.init_app(app)<---------------------

    # 创建redis对象
    # 当 decode_responses 设置为 True 时,Redis 返回的字符串数据将会被解码为 Python 字符串类型。这样可以方便地处理 Redis 中存储的文本数据。
    # 而当 decode_responses 设置为 False(默认值)时,Redis 返回的字符串数据将会以字节字符串(bytes)的形式返回。
    # 这在处理二进制数据或者需要与其他 Redis 客户端进行交互时可能更为合适
    global redis_store  # global将局部变量声明为全局变量
    redis_store = StrictRedis(host=config.REDIS_HOST, port=config.REDIS_PORT, decode_responses=True)

    # 创建session对象
    Session(app)

    # 使用CSRFProtect保护app
    CSRFProtect(app)

    # 注册蓝图
    from info.modules.index import index_blue
    app.register_blueprint(index_blue)

    return app
---在项目启动文件中app.py中;注:这里的启动文件最好叫做app.py而不是叫manage.py否则会报错,且记得引入models,让系统知道models的存在从而能够迁移成功!
python 复制代码
from info import create_app, db,models #<---------
from flask_migrate import Migrate

app = create_app('develop')

# 创建Migrate实例
migrate = Migrate(app, db)

if __name__ == '__main__':
    app.run()
---执行迁移命令
python 复制代码
flask db init  # 只需执行一次即可
flask db migrate 
flask db upgrade 
# 如果记不住后面两个命令 则可以使用 flask db --help进行查看
相关推荐
方安乐5 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
zh1570236 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
蜡台7 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Mr.朱鹏7 小时前
【Python 进阶 | 第四篇】Psycopg3 + Flask 实现 PostgreSQL CRUD 全流程:从连接池到RESTful接口
python·postgresql·flask·virtualenv·fastapi·pip·tornado
前端一小卒7 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
2401_871492857 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python
FreakStudio8 小时前
亲测可用!可本地部署的 MicroPython 开源仿真器
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
SilentSamsara8 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
曹牧9 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
zhoutongsheng9 小时前
C#怎么实现Swagger文档 C#如何在ASP.NET Core中集成Swagger自动生成API文档【框架】
jvm·数据库·python