Python使用Flask Migrate模块迁移数据库

 更新时间:2022年07月27日 14:52:46   作者:自由小冰儿  
Flask-Migrate是一个为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作

前言

本篇文章,阐述一下Flask中数据库的迁移

为什么要说数据库迁移呢?

比如我们以前有一个数据库,里面的信息有 id, name现在我想再加一个gender属性,应该怎么办呢?不可能直接把数据库删除掉吧。然后重新创建一个,因此本文介绍一种,通过数据库迁移的方法,可以保留原始的数据,并完成添加新的一列的方法。

安装

直接使用pip install flask-migrate即可

初始化

项目结构

# exts.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

老样子,我们还是在exts.py中,初始我们的数据库,这里时放Flask扩展的地方。

# models.py
from exts import db
class User(db.Model):
	id = db.Column(db.Integer,primary_key=True)
	username = db.Column(db.String(80),unique=True)
	def __repr__(self):
		return '<User %s>' % self.username

models.py是放模型的地方。

# app.py
from flask import Flask
from exts import db
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///foo.db"
# !!!绑定app和数据库
db.init_app(app)
migrate = Migrate(app,db)
if __name__ == '__main__':
    app.run()

主程序,我们在!!!进行初始化数据库迁移的migrate 对象。初始化之后我们可以执行下面的三大命令去创建我们的数据库。就不需要db.create_all()命令啦。

三大命令

# (1)初始化
flask db init
# 把当前的模型添加到迁移文件
flask db migrate
# 将映射文件真正的映射到数据库中
flask db upgrade

(1)新建一个名字为migrations的文件夹,并且记录一个数据库版本号

其他问题:

如果报错[flask_migrate] Error: Can‘t locate revision identified by '409392ed6301'

答:db revision --rev-id 409392ed6301 409392ed6301是问题的版本号

Error: While importing ‘app’, an ImportError was raised.

答:请先去运行一下app.py,确保app.py可以运行

Error: Could not locate a Flask application. You did not provide the “FLASK_APP” environment variable, and a “wsgi.py” or “app.py” module was not found in the current directory. 答:请确保执行命令时的文件夹中有app.py文件

到此这篇关于Python使用Flask Migrate模块迁移数据库的文章就介绍到这了,更多相关Python Flask Migrate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python opencv实现目标外接图形

    python opencv实现目标外接图形

    这篇文章主要为大家详细介绍了python opencv实现目标外接图形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Python实现文件只读属性的设置与取消

    Python实现文件只读属性的设置与取消

    这篇文章主要为大家详细介绍了Python如何实现设置文件只读与取消文件只读的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-07-07
  • 在python2.7中用numpy.reshape 对图像进行切割的方法

    在python2.7中用numpy.reshape 对图像进行切割的方法

    今天小编就为大家分享一篇在python2.7中用numpy.reshape 对图像进行切割的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python+logging输出到屏幕将log日志写入文件

    Python+logging输出到屏幕将log日志写入文件

    这篇文章主要给大家介绍了关于Python+logging输出到屏幕将log日志写入文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python 中的装饰器实现函数的缓存(场景分析)

    Python 中的装饰器实现函数的缓存(场景分析)

    Python中的装饰器可以用于实现函数的缓存,其原理是在函数执行前,首先判断传入的参数是否在缓存中已经存在对应的计算结果,这篇文章主要介绍了Python 中的装饰器可以用于实现函数的缓存,需要的朋友可以参考下
    2023-02-02
  • Python HMAC模块维护数据安全技术实例探索

    Python HMAC模块维护数据安全技术实例探索

    本篇博客将带领读者深入探索Python中HMAC模块的高级应用,通过丰富的示例代码和详细的解释,揭示HMAC在实际应用场景中的多面光芒,从基础概念到密码存储、文件完整性验证、API安全,再到与加密算法的巧妙结合
    2024-01-01
  • python tkinter自定义实现Expander控件

    python tkinter自定义实现Expander控件

    和其他成熟的GUI库相比,tkinter的组件并不是太多,但在自定义组件这一点上,并不逊色于其他框架,下面小编就教大家如何自定义一个Expander控件吧
    2023-08-08
  • 使用python实现学生信息管理系统

    使用python实现学生信息管理系统

    这篇文章主要为大家详细介绍了使用python实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • 基于PyQt5制作一个数据图表生成器

    基于PyQt5制作一个数据图表生成器

    这篇文章主要介绍了如何利用PyQT5制作一个数据图表生成器,可以通过Pyecharts模块生成可视化的html数据图表,感兴趣的小伙伴可以跟随小编学习一下
    2022-02-02
  • 基于python绘制科赫雪花

    基于python绘制科赫雪花

    这篇文章主要为大家详细介绍了基于python绘制科赫雪花,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论