这篇文章给大家分享的是有关使用Flask-Migrate拓展数据库表结构的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
<强>前言强>
在我们用sqlchemy模块创建完几个表时,如果在实际生产环境中,需要对表结构进行更改,应该怎么办呢?总不能把表删除了吧,这样数据就会丢失了。
更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。
在烧瓶中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。
操作示例:
<强> 1。首先需要安装flask-migrate模块,当然还有flask-script模块。强>
pip3 install flask-migrate pip3 install  flask-script
<强> 2。代码:强>
#=utf - 8编码 得到flask import 烧瓶 得到flask_sqlalchemy import  SQLAlchemy 得到flask_migrate import  MigrateCommand迁移 得到flask_script import 壳,经理 app =,瓶(__name__) 时间=manager 管理器(应用) app.config [& # 39; SQLALCHEMY_DATABASE_URI& # 39;],=, & # 39; mysql://根:mysql@127.0.0.1:3306/Flask_test& # 39; app.config [& # 39; SQLALCHEMY_COMMIT_ON_TEARDOWN& # 39;],=,真的 app.config [& # 39; SQLALCHEMY_TRACK_MODIFICATIONS& # 39;],=,真的 时间=db SQLAlchemy(应用) 第号一个参数是瓶的实例,第二个参数是Sqlalchemy数据库实例 时间=migrate 迁移(app, db), #经理是Flask-Script的实例,这条语句在Flask-Script中添加一个db命令 manager.add_command (& # 39; db # 39;, MigrateCommand) #定义模型的角色 class 角色(db.Model): #,才能定义表名 时间=__tablename__ 才能;& # 39;角色# 39; #,才能定义列对象 时间=id 才能;db.Column (db.Integer, primary_key=True) name 才能=,db.Column (db.String(64),独特的=True) user 才能=,db.relationship(& # 39;用户# 39;,,backref=& # 39;角色# 39;) #才能repr()方法显示一个可读字符串, def 才能__repr__(自我): ,,,return & # 39;角色:& # 39;.format (self.name) #定义用户 class 用户(db.Model): 时间=__talbe__ 才能;& # 39;用户# 39; 时间=id 才能;db.Column (db.Integer, primary_key=True) username 才能=,db.Column (db.String(64),独特的=True,,指数=True) #才能设置外键 role_id 才能=,db.Column (db.Integer, db.ForeignKey (& # 39; roles.id& # 39;)) def 才能__repr__(自我): ,,,return & # 39;用户:& # 39;.format (self.username) if __name__ ==, & # 39; __main__ # 39;: manager.run才能()
主要注意第8行-20行,48行。要把原来的代码改成这样。
<强> 3。命令行的操作
强>
<>强创建迁移仓库强>
这个命令会创建migirations文件夹,所有迁移文件都放在里面
python3 xxx.py db init
注:db是20行决定了,可以更改
<>强自动创建迁移脚本
强>
python3 xxx.py db migrate -m"版本名(注释)“
<强>更新数据库强>
python3 xxx.py db 升级
<强>当我们需要修改表结构时,直接在xxx。py里直接增删相应的代码
强>
<强>修改完成后,继续创建新的迁移脚本
强>
python 文件,db migrate -m"新版本名(注释)“
<强>更新数据库强>
python3 xxx.py db 升级
更新完之后,其实就是提交操作,类似于git添加一个新的版本。
但是,如果我们想返回历史的版,本应该怎么操作呢?
<强>先查看版本号
强>
python xxx.py db 历史
然后记住想要返回的版本号。
<强>返回指定的版本
强>
python xxx.py db 降级(升级),版本号
然后打开你的代码,可以发现他自动复原了!
感谢各位的阅读!关于“使用Flask-Migrate拓展数据库表结构的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!