400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Flask中如何进行数据库迁移

本篇文章为大家展示了Flask中如何进行数据库迁移,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

成都创新互联公司主要从事成都网站设计、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务江宁,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

# pip install flask-migrate

#coding=utf-8

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

from flask_migrate import Migrate,MigrateCommand

from flask_script import Shell,Manager

app = Flask(name)

manager = Manager(app)

app.config['SQLALCHEMY_DATABASE_URI'] = 'MySQL://root:mysql@127.0.0.1:3306/Flask_test'

app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

#第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库实例

migrate = Migrate(app,db) 

#manager是Flask-Script的实例,这条语句在flask-Script中添加一个db命令

manager.add_command('db',MigrateCommand)

#定义模型Role

class Role(db.Model):

    # 定义表名

    __tablename__ = 'roles'

    # 定义列对象

    id = db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(64), unique=True)

    user = db.relationship('User', backref='role')

    #repr()方法显示一个可读字符串,

    def __repr__(self):

        return 'Role:'.format(self.name)

#定义用户

class User(db.Model):

    __talbe__ = 'users'

    id = db.Column(db.Integer, primary_key=True)

    username = db.Column(db.String(64), unique=True, index=True)

    #设置外键

    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

    def __repr__(self):

        return 'User:'.format(self.username)

if __name__ == '__main__':

    manager.run()

```

# 以下是在终端进行的操作

创建迁移仓库

#这个命令会创建migrations文件夹,所有迁移文件都放在里面。
python database.py db init

创建迁移脚本

python database.py db migrate -m 'initial migration'

更新数据库

python database.py db upgrade

返回以前的版本

可以根据history命令找到版本号,然后传给downgrade命令:

python app.py db history

输出格式: ->  版本号 (head), initial migration
python app.py db downgrade 版本号

实际操作顺序:

上述内容就是Flask中如何进行数据库迁移,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前标题:Flask中如何进行数据库迁移
文章源于:http://mzwzsj.com/article/joogij.html

其他资讯

让你的专属顾问为你服务