十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍flask数据库迁移的作用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联建站自2013年创立以来,先为通州等服务建站,通州等地企业,进行企业商务咨询服务。为通州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
使用Flsak-Migrate数据库迁移框架,可以保证数据库结构在发生变化时,改变数据库结构不至于丢失数据库的数据。使用其进行数据库进行数据库的迁移,主要分为三个步骤:
1 创建数据仓库
首先通过MySQL数据库命令行新建数据库test.
然后我们要在test.py中布置相关环境:
import os,json from flask import Flask, render_template, session, redirect, url_for from flask_script import Manager,Shell from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate,MigrateCommand app = Flask(__name__) app.config['SECRET_KEY'] = 'hard to guess string' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@127.0.0.1/test?charset=utf8' #app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True manager = Manager(app) db = SQLAlchemy(app) migrate = Migrate(app,db) class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) age = db.Column(db.String(64)) .... def __repr__(self): return '' % self.username def make_shell_context(): return dict(app=app, db=db, User=User) if __name__ == '__main__': manager.run()
这里我们引入了Manager模块用来使启动flask时支持命令行。首先,分别引入了migrate模块和Manager相关模块;创建了一个manager对象,以支持自定义命令的配置;创建一个Migrate对象并关联对应的应用程序类对象app和数据库管理类对象db;最后一行将MigrateCommand命令加入到manager对象中,这样就可以在命令行中进行数据库迁移的相关命令.
需要注意的是,引入Manager支持启动应用程序的命令行时,我们还需要修改app的run语句,改为:
if __name__=='__main__': manager.run()
接下来我们使用命令行模式创建一个迁移的仓库:
>>> python test.py db init
'db'是在manager.add_command('db',MigrateComand)这句中我们声明的命令行对象名称,init是Migrate命令,表示初始化迁移仓库,运行完成之后,会在当前目录下创建一个migrations的文件夹,用于进行迁移的数据库脚本都放在这里.
2 创建迁移脚本
使用migarate子命令来创建数据库迁移脚本,在此之前我们先改动一下数据库的模型来验证迁移是否成功,我们在User模型中添加age属性:
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) age = db.Column(db.String(64))我们检查下是否更新成功:
python test.py db migrate
3 数据库更新
python test.py db upgrade
成功进行了更新。
以上是“flask数据库迁移的作用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!