使用Flask-Migrate拓展数据库表结构的方法

  介绍

这篇文章给大家分享的是有关使用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拓展数据库表结构的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

使用Flask-Migrate拓展数据库表结构的方法