zoukankan      html  css  js  c++  java
  • 16,Flask-Migrate

    1.安装 Flask-Migrate

    pip install Flask-Migrate

    2.将 Flask-Migrate 加入到 Flask 项目中 - PS: 注意了 Flask-Migrate 是要依赖 Flask-Script 组件的

     1 import MyApp
     2 # 导入 Flask-Script 中的 Manager
     3 from flask_script import Manager
     4 
     5 # 导入 Flask-Migrate 中的 Migrate 和 MigrateCommand
     6 # 这两个东西说白了就是想在 Flask-Script 中添加几个命令和指令而已
     7 from flask_migrate import Migrate,MigrateCommand
     8 
     9 app = MyApp.create_app()
    10 # 让app支持 Manager
    11 manager = Manager(app) # type:Manager
    12 
    13 # Migrate 既然是数据库迁移,那么就得告诉他数据库在哪里
    14 # 并且告诉他要支持那个app
    15 Migrate(app,MyApp.db)
    16 # 现在就要告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢
    17 manager.add_command("db",MigrateCommand) # 当你的命令中出现 db 指令,则去MigrateCommand中寻找对应关系
    18 """
    19 数据库迁移指令:
    20 python manager.py db init 
    21 python manager.py db migrate   # Django中的 makemigration
    22 python manager.py db upgrade  # Django中的 migrate
    23 """
    24 
    25 
    26 @manager.command
    27 def DragonFire(arg):
    28     print(arg)
    29 
    30 @manager.option("-n","--name",dest="name")
    31 @manager.option("-s","--say",dest="say")
    32 def talk(name,say):
    33     print(f"{name}你可真{say}")
    34 
    35 if __name__ == '__main__':
    36     #app.run()
    37     # 替换原有的app.run(),然后大功告成了
    38     manager.run()
    MyApp/manager.py

    3.执行数据库初始化指令

    python manager.py db init

    此时你会发现你的项目目录中出现了一个好玩儿的东西

    接下来的操作就和Django中一样了,在这里就不做演示了

     4,多数据库支持

    init_app方法: 
    from flask_sqlalchemy import SQLAlchemy
    from flask_migrate import Migrate
    
    db = SQLAlchemy()
    migrate = Migrate()
    
    def create_app():
         """Application-factory pattern"""
         ...
         ...
         db.init_app(app)
         migrate.init_app(app, db)
         ...
         ...
         return app
    
    manage.py  
    from flask_migrate import Migrate, MigrateCommand
    migrate = Migrate(app, db)
    manager.add_command('db', MigrateCommand)
    
    在执行数据库迁移
    python manage.py db init --multidb #
    python manage.py db migrate
    python manage.py db upgrade
    这样就可以使用了
    

      

     

     
     
  • 相关阅读:
    Revit 开发将自己的窗口设置为Revit窗口
    Revit api 创建楼梯图元
    Revit api 创建族并加载到当前项目
    tomcat源码阅读之BackupManager
    tomcat源码阅读之Tribes.RpcChannel
    tomcat源码阅读之集群
    Java单播、广播、多播(组播)---转
    tomcat源码阅读之默认连接器
    centos8运行脚本找不到python项目解决
    python虚拟环境冻结与安装
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/10548100.html
Copyright © 2011-2022 走看看