• 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"
  • 相关阅读:
    基于发布/订阅模型的应用程序的主循环设计
    C++使用继承时子对象的内存布局
    安装 CentOS 后的系统配置及软件安装备忘
    环形无锁队列
    并发编程基础
    线程池实现
    Git远程操作
    Unix权限管理
    jquery中,某些写法后来更新导致版本不支持的替代方法
    js相关
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/9692928.html
Copyright © 2020-2023  润新知