CSDN博客地址

Flask(五)

数据库迁移:

先准备py文件:

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


class Config(object):
    """项目配置信息"""
    # 数据库链接配置
    SQLALCHEMY_DATABASE_URI = "mysql://root:cq@127.0.0.1:3306/migrate18"
    # 开启数据库跟踪操作
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    # 加密字符串
    SECRET_KEY = "SAKDALSDJSALKASDLASDKLSAKJJ"


#1.创建app对象
app = Flask(__name__)
# 添加配置到app中
app.config.from_object(Config)

#2.创建数据库对象
db = SQLAlchemy(app)

#3.创建迁移对象
migrate = Migrate(app, db)

#4.创建管理对象  python xx.py runserver -h ip -p port
manager = Manager(app)

#5.将命令添加到管理对象中
# 参数1: 命名名称 参数2:命令类型
# python demo2_migrate.py db xx
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)
    email = db.Column(db.String(64))
    password = db.Column(db.String(64))
    #设置外键
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

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


# 数据库迁移操作
@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    # app.run(debug=True)
    #6.使用管理对象启动的flask项目
    manager.run()
在pycharme终端运行:

运行命令: python3     py文件   runserver  -h  ip地址    -p    端口号    -d

初始化命令: python3   py文件      db        init(第一次执行的时候才会使用该命令,只使用一次,会产生migrations文件夹)

数据库迁移,会形成新的版本: python3    py文件  db   migrate   -m "XXXX" (-m:指明对这一步操作的注释,只要模型对象的属性发生变化都会执行)

升级创建真正的数据库表:    python3    py文件   db   upgrade    (进行数据库迁移的版本升级才会真正创建数据库的表(只要模型对象的属性发生该表都要执行))

 

查询历史版本: python3   py文件   db    history

 回退到对应的低版本:  python3   py文件   db    downupgrade   版本号

回到高版本对应的版本: python3  py文件   db   upgrade  版本号

 

 

蓝图:

from flask import Flask
from cart import cart_bp

app = Flask(__name__)
app.register_blueprint(cart_bp)


@app.route("/index")
def index():
return "index"


@app.route("/goodlist")
def goodlist():
return "goodlist"


@app.route("/detail")
def detail():
return "detail"


@app.route("/center")
def center():
return "center"


if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)


输出:
Map([<Rule '/goodlist' (HEAD, OPTIONS, GET) -> goodlist>,
 <Rule '/detail' (HEAD, OPTIONS, GET) -> detail>,
 <Rule '/center' (HEAD, OPTIONS, GET) -> center>,
 <Rule '/index' (HEAD, OPTIONS, GET) -> index>,
 <Rule '/test' (HEAD, OPTIONS, GET) -> cart_bp.test>,
 <Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>])


cart.py:

from flask import Blueprint

cart_bp = Blueprint("cart_bp", __name__)


@cart_bp.route("/test")
def test():
return "test"

 

posted @ 2018-09-23 16:01  Yi_warmth  阅读(106)  评论(0编辑  收藏  举报
CSDN博客地址