首页 > 数据库技术 > 详细

flask中数据库的迁移

时间:2019-06-21 09:28:36      阅读:100      评论:0      收藏:0      [点我收藏+]

1.代码

# -*- coding: utf-8 -*-

from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import MigrateCommand, Migrate

app = Flask(__name__)
# 数据库的连接配置
app.config[SQLALCHEMY_DATABASE_URI] = mysql+pymysql://root:mysql@17.11.15.12:3306/flask_0620
# 追踪数据库修改的配置,如果为True,那么数据库在数据操作的时候,会向外发出信号
app.config[SQLALCHEMY_TRACK_MODIFICATIONS] = False
manager = Manager(app)
# 初始化SQLAlchemy对象并且将app传入
db = SQLAlchemy(app)
# 关联迁移,将app和数据库的操作对象传入
Migrate(app, db, )
manager.add_command(ddbb, MigrateCommand)


# 定义 角色 的模型,对应到数据库就是一张表
# admin:
class Role(db.Model):
    # 指定表名,可以不用写,默认会以当前类的类名小写作为表名
    __tablename__ = "roles"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    info = db.Column(db.String(64))
    # 指定关系,可以通过一个属性将当前一的一方查询出所对应的多的这一方的所有数据
    # backref:反向引用,给user身上添加role这个属性,并且该属性指定的值就是当前用户所对应的一的这一方的数据
    # users和role是自己随便起的名字
    users = db.relationship(User, backref=role)

    def __repr__(self):
        return "<Role %s>" % self.name


class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    email = db.Column(db.String(64), unique=True)
    password = db.Column(db.String(64))
    idcard = db.Column(db.String(64), unique=True)
    # 添加外键,指定该外键关系哪张表的哪一列
    role_id = db.Column(db.Integer, db.ForeignKey(roles.id))

    def __repr__(self):
        return "<User %s>" % self.name


@app.route(/)
def index():
    return hello world


if __name__ == __main__:
    manager.run()

2.执行迁移的命令

>初始化迁移,创建迁移所需要的一系列的命令

python manager.py ddbb init

>生成当前版本的迁移文件

python manager.py ddbb migrate -m‘initial‘ 

>执行迁移文件

python manager.py ddbb upgrade

3.当表中需要增加新的字段,如何再进行数据库的迁移

python manager.py ddbb migrate -m‘role and info clo‘

python manager.py ddbb upgrade

4.迁移的回退

>版本的查看

python manager.py ddbb current
python manager.py ddbb history

>返回到某一个版本

python manager.py ddbb downgrade(upgrade) 版本号

flask中数据库的迁移

原文:https://www.cnblogs.com/songyanxin/p/11062455.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!