flask-migrate数据库迁移(代码片段)

itelephant itelephant     2022-12-23     414

关键词:

数据库迁移


  • 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。
  • 为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。

 

  • 创建迁移仓库

python3 database.py db init

  • 创建迁移脚本

 

  • 自动创建迁移脚本有两个函数
    • upgrade():函数把迁移中的改动应用到数据库中。
    • downgrade():函数则将改动删除。
  • 自动创建的迁移脚本会根据模型定义和数据库当前状态的差异,生成upgrade()和downgrade()函数的内容。
  • 对比不一定完全正确,有可能会遗漏一些细节,需要进行检查

python3 database.py db migrate -m initial migration

  • 更新数据库

    # 更新
    python3 database.py db upgrade
    
    # 查看历史版本
    python app.py db history
    
    # 回退
    python3 app.py db downgrade 版本号
    
    ‘‘‘
    实际操作顺序:
    1.python 文件 db init
    2.python 文件 db migrate -m"版本名(注释)"
    3.python 文件 db upgrade 然后观察表结构
    4.根据需求修改模型
    5.python 文件 db migrate -m"新版本名(注释)"
    6.python 文件 db upgrade 然后观察表结构
    7.若返回版本,则利用 python 文件 db history查看版本号
    8.python 文件 db downgrade(upgrade) 版本号
    
    ‘‘‘

     


     

 1 from flask import Flask
 2 from flask_sqlalchemy import SQLAlchemy
 3 from flask_migrate import MigrateCommand, Migrate
 4 from flask_script import Manager
 5 
 6 ‘‘‘
 7 MigrateCommand:迁移命令
 8 
 9 第一步初始化:python3 demo6_数据库迁移.py db init
10 第二步生成迁移版本文件:python3 demo6_数据库迁移.py db migrate -m‘initial_01‘
11 第三步执行迁移:python3 demo6_数据库迁移.py db upgrade|downgrade
12 
13 
14 ‘‘‘
15 
16 app = Flask(__name__)
17 
18 #设置连接数据库的URL
19 app.config[SQLALCHEMY_DATABASE_URI] = mysql://root:[email protected]:3306/migratetest
20 app.config[SQLALCHEMY_TRACK_MODIFICATIONS] = True
21 
22 db = SQLAlchemy(app)
23 
24 # 一、迁移初始化,第一个参数是flask实例, 第二个参数是数据库实例
25 Migrate(app, db)
26 # 二、实例终端命令执行对象
27 manager = Manager(app)
28 # 三、为manager添加迁移命令
29 manager.add_command(db, MigrateCommand)
30 
31 
32 
33 
34 # 创建数据表模型----实例化后就是指向数据表中的一条记录
35 class Role(db.Model):
36     # 定义表名
37     __tablename__ = roles
38     # 定义列对象
39     id = db.Column(db.Integer, primary_key=True)
40     nike_name = db.Column(db.String(64), unique=True)  # 修改字段名
41     age = db.Column(db.Integer, nullable=True)  # 新增字段
42     # height = db.Column(db.Integer)  # 新增字段, 删除此字段
43     user = db.relationship(User, backref=role)
44 
45 
46     #repr()方法显示一个可读字符串
47     def __repr__(self):
48         return Role:%s% self.name
49 
50 
51 class User(db.Model):
52     __tablename__ = users
53     id = db.Column(db.Integer, primary_key=True)
54     name = db.Column(db.String(64), unique=True, index=True)
55     email = db.Column(db.String(64),unique=True)
56     password = db.Column(db.String(64))
57     role_id = db.Column(db.Integer, db.ForeignKey(roles.id))
58 
59     def __repr__(self):
60         return User:%s%self.name
61 
62 
63 @app.route(/)
64 def index():
65     return "hello world"
66 
67 
68 
69 if __name__ == __main__:
70     manager.run()
71   

 

flask-migrate(代码片段)

...在这里该诉你,如果你同时拥有两个三方组件Flask-Script和Flask-Migrate那么就支持这样的操作 Flask-Script的安装与使用可参考之前的博客内容一、安装Flask-Migratepip3installFlask-Migrate二、将Flask-Migrate加入到Flask项目中PS:注意了Flask-Migrat... 查看详情

flask-migrate(代码片段)

1.安装Flask-Migrate1pipinstallFlask-Migrate2.将Flask-Migrate加入到Flask项目中- PS:注意了Flask-Migrate是要依赖Flask-Script组件的1importMyApp2#导入Flask-Script中的Manager3fromflask_scriptimportManager45#导入Flask-Migrate中的Migrate和MigrateCommand6#这两个东西说... 查看详情

flask项目中数据库迁移的使用(代码片段)

...的变化,然后把变动应用到数据库中。在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提供了一 查看详情

flask-migrate库的使用(代码片段)

...非常的不方便,万幸,Flask-SQLAlchemy的开发者同时开发了flask-migrate库,用于数据库的迁移。本文为windows环境。安装pipinstallflask-migrate通过pip安装,就能完成。使用方法在进行迁移操作以前,我们需要现在程序中进行初始化操作:f... 查看详情

flask-migrate(代码片段)

...,之后重新运行‘db.reate_all‘才会重新映射,为此可使用flask-Migrate来解决这一问题。它可以在每次修改模型后,可将修改后的模型映 查看详情

flask之数据库迁徙(代码片段)

...的变化,然后把变动应用到数据库中。在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提 查看详情

flask-migrate(代码片段)

终于到了Flask-Migrate,之前在学习Flask-SQLAlchemy的时候,有的同学就提过类似的问题,Flask支持makemigration/migrate吗?答案在这里该诉你,如果你同时拥有两个三方组件Flask-Script和Flask-Migrate那么就支持这样的动作首先你要有几个准备工作第... 查看详情

flask中使用flask-migrate扩展迁移数据库

安装Flask-Migrate插件(venv)$pipinstallflask-migrate注意到虚拟环境中(因为Flask环境就安装在虚拟环境中) 安装flask-script使python支持命令行操作pipinstallflask-script 创建manage.py文件#!/usr/bin/envpythonfromflask_scriptimportManagerf 查看详情

flask-migrate使用(代码片段)

...只能生成和删除表,不能对已经存在的表进行操作。通过flask-migrate可以对已经存在的表字段进行修改1、安装:依赖于flask-script,所以需要安装它pipinstallflask-migrate2、使用方法  1)导入    app和db,分别是flask对象和SQLAlche... 查看详情

flask从入门到精通之使用flask-migrate实现数据库迁移

  在开发程序的过程中,你会发现有时需要修改数据库模型,而且修改之后还需要更新数据库。仅当数据库表不存在时,Flask-SQLAlchemy才会根据模型进行创建。因此,更新表的唯一方式就是先删除旧表,不过这样做会丢失数据... 查看详情

flaskflask-migrate基本使用(代码片段)

...果有一个工具能专门做这种事情,就显得非常有用了,而flask-migrate就是做这个事情的。flask-migrate是基于Alembic进行的一个封装,并集成到Flask中,而所有的迁移操作其实都是Alembi 查看详情

Flask-Migrate 首次迁移时未检测到架构更改

】Flask-Migrate首次迁移时未检测到架构更改【英文标题】:Flask-MigrateNoChangesDetectedtoSchemaonfirstmigration【发布时间】:2019-01-1721:07:18【问题描述】:我将Flask与Flask-SQLAlchemy和Flask-Migrate一起使用来创建应用程序,但是当我尝试创建迁... 查看详情

flask框架从入门到精通之模型迁移操作(十六)(代码片段)

...。我们也想让Flask框架支持这样的操作,就需要使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能 查看详情

flask数据库迁移

...然后把变动应用到数据库中。    在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提 查看详情

flask-migrate(代码片段)

终于到了Flask-Migrate,之前在看Flask-SQLAlchemy的时候,Flask支持makemigration/migrate吗?答案在这里该诉你,如果你同时拥有两个三方组件Flask-Script和Flask-Migrate那么就支持这样的动作安装Flask-MigratepipinstallFlask-Migrate将Flask-Migrate加入到Flask项目... 查看详情

flask-migrate

使用Flask-migrate执行数据库迁移命令(mysql)1.pythonmanage.pydbinit#初始化,之后生成一个migrations文件夹我在执行这步之前先把项目里的migrations文件夹删除。执行完这步之后出现了这个文件夹,不过versions文件夹里变成空的了。pythonmange.... 查看详情

使用flask-migrate进行管理数据库升级

...程序发布到服务器上后无法正常使用。现在我们可以使用Flask-Migrate插件来解决之,Flask-Migrate插件是基于Alembic,Alembic是由大名鼎鼎的SQLAlchemy作者开发数据迁移工具。具体操作如下:1.安装Flask-Migrate插件$p 查看详情

python9:注册flask-migrate(代码片段)

查看详情