关键词:
数据库迁移
- 在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 查看详情